From 295096de249c3d57d14187fa5ccacde5fd93b98e Mon Sep 17 00:00:00 2001 From: PhilKunz Date: Sun, 11 Sep 2016 18:01:46 +0200 Subject: [PATCH] split into class files --- dist/index.d.ts | 16 ++-------- dist/index.js | 38 +++-------------------- dist/smartdata.classes.dbcollection.d.ts | 18 +++++++++++ dist/smartdata.classes.dbcollection.js | 20 ++++++++++++ dist/smartdata.classes.dbconnection.d.ts | 11 +++++++ dist/smartdata.classes.dbconnection.js | 29 ++++++++++++++++++ test/test.js | 5 ++- test/test.ts | 4 ++- ts/index.ts | 39 ++---------------------- ts/smartdata.classes.dbcollection.ts | 24 +++++++++++++++ ts/smartdata.classes.dbconnection.ts | 33 ++++++++++++++++++++ 11 files changed, 151 insertions(+), 86 deletions(-) create mode 100644 dist/smartdata.classes.dbcollection.d.ts create mode 100644 dist/smartdata.classes.dbcollection.js create mode 100644 dist/smartdata.classes.dbconnection.d.ts create mode 100644 dist/smartdata.classes.dbconnection.js create mode 100644 ts/smartdata.classes.dbcollection.ts create mode 100644 ts/smartdata.classes.dbconnection.ts diff --git a/dist/index.d.ts b/dist/index.d.ts index 5647ed9..fb1debe 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,14 +1,2 @@ -/// -import * as plugins from './smartdata.plugins'; -export declare class DbCollection { - constructor(nameArg: string, db: plugins.mongodb.Db); -} -export declare type TDbConnectionStatus = 'disconnected' | 'connected' | 'failed'; -export declare class DbConnection { - dbUrl: string; - db: plugins.mongodb.Db; - status: TDbConnectionStatus; - constructor(dbUrl: string); - connect(): plugins.q.Promise; - close(): plugins.q.Promise; -} +export * from './smartdata.classes.dbcollection'; +export * from './smartdata.classes.dbconnection'; diff --git a/dist/index.js b/dist/index.js index f5327ef..0693604 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,35 +1,7 @@ "use strict"; -const plugins = require('./smartdata.plugins'); -class DbCollection { - constructor(nameArg, db) { - let collection = db.collection(nameArg); - } +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } -exports.DbCollection = DbCollection; -class DbConnection { - constructor(dbUrl) { - this.dbUrl = dbUrl; - } - connect() { - let done = plugins.q.defer(); - plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { - if (err) { - console.log(err); - } - plugins.assert.equal(null, err); - this.db = db; - plugins.beautylog.success(`connected to database at ${this.dbUrl}`); - done.resolve(this.db); - }); - return done.promise; - } - close() { - let done = plugins.q.defer(); - this.db.close(); - plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`); - done.resolve(); - return done.promise; - } -} -exports.DbConnection = DbConnection; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxPQUFPLFdBQU0scUJBRXpCLENBQUMsQ0FGNkM7QUFFOUM7SUFDSSxZQUFZLE9BQWUsRUFBRSxFQUFzQjtRQUMvQyxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNDLENBQUM7QUFDTCxDQUFDO0FBSlksb0JBQVksZUFJeEIsQ0FBQTtBQUlEO0lBS0ksWUFBWSxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3BELEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1lBQ1osT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3pCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzVCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDZixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztBQUNMLENBQUM7QUE1Qlksb0JBQVksZUE0QnhCLENBQUEifQ== \ No newline at end of file +__export(require('./smartdata.classes.dbcollection')); +__export(require('./smartdata.classes.dbconnection')); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaUJBQWMsa0NBQ2QsQ0FBQyxFQUQrQztBQUNoRCxpQkFBYyxrQ0FDZCxDQUFDLEVBRCtDIn0= \ No newline at end of file diff --git a/dist/smartdata.classes.dbcollection.d.ts b/dist/smartdata.classes.dbcollection.d.ts new file mode 100644 index 0000000..05c480c --- /dev/null +++ b/dist/smartdata.classes.dbcollection.d.ts @@ -0,0 +1,18 @@ +import * as plugins from './smartdata.plugins'; +import { DbConnection } from './smartdata.classes.dbconnection'; +export declare class DbCollection { + collection: plugins.mongodb.Collection; + constructor(nameArg: string, dbConnectionArg: DbConnection); + /** + * adds a validation function that all newly inserted and updated objects have to pass + */ + addObjectValidation(): void; + /** + * inserts am object into the DbCollection + */ + insert(objectArg: T): void; + /** + * inserts many objects at once into the DbCollection + */ + insertMany(objectArrayArg: T[]): void; +} diff --git a/dist/smartdata.classes.dbcollection.js b/dist/smartdata.classes.dbcollection.js new file mode 100644 index 0000000..5aaa406 --- /dev/null +++ b/dist/smartdata.classes.dbcollection.js @@ -0,0 +1,20 @@ +"use strict"; +class DbCollection { + constructor(nameArg, dbConnectionArg) { + this.collection = dbConnectionArg.db.collection(nameArg); + } + /** + * adds a validation function that all newly inserted and updated objects have to pass + */ + addObjectValidation() { } + /** + * inserts am object into the DbCollection + */ + insert(objectArg) { } + /** + * inserts many objects at once into the DbCollection + */ + insertMany(objectArrayArg) { } +} +exports.DbCollection = DbCollection; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQTtJQUVJLFlBQVksT0FBZSxFQUFFLGVBQTZCO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLEtBQUcsQ0FBQztJQUV2Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxTQUFZLElBQUcsQ0FBQztJQUV2Qjs7T0FFRztJQUNILFVBQVUsQ0FBQyxjQUFtQixJQUFHLENBQUM7QUFDdEMsQ0FBQztBQXBCWSxvQkFBWSxlQW9CeEIsQ0FBQSJ9 \ No newline at end of file diff --git a/dist/smartdata.classes.dbconnection.d.ts b/dist/smartdata.classes.dbconnection.d.ts new file mode 100644 index 0000000..0afca5e --- /dev/null +++ b/dist/smartdata.classes.dbconnection.d.ts @@ -0,0 +1,11 @@ +/// +import * as plugins from './smartdata.plugins'; +export declare type TDbConnectionStatus = 'disconnected' | 'connected' | 'failed'; +export declare class DbConnection { + dbUrl: string; + db: plugins.mongodb.Db; + status: TDbConnectionStatus; + constructor(dbUrl: string); + connect(): plugins.q.Promise; + close(): plugins.q.Promise; +} diff --git a/dist/smartdata.classes.dbconnection.js b/dist/smartdata.classes.dbconnection.js new file mode 100644 index 0000000..7d15cd4 --- /dev/null +++ b/dist/smartdata.classes.dbconnection.js @@ -0,0 +1,29 @@ +"use strict"; +const plugins = require('./smartdata.plugins'); +class DbConnection { + constructor(dbUrl) { + this.dbUrl = dbUrl; + } + connect() { + let done = plugins.q.defer(); + plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { + if (err) { + console.log(err); + } + plugins.assert.equal(null, err); + this.db = db; + plugins.beautylog.success(`connected to database at ${this.dbUrl}`); + done.resolve(this.db); + }); + return done.promise; + } + close() { + let done = plugins.q.defer(); + this.db.close(); + plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`); + done.resolve(); + return done.promise; + } +} +exports.DbConnection = DbConnection; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxxQkFFekIsQ0FBQyxDQUY2QztBQUk5QztJQUtJLFlBQVksS0FBYTtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDNUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNwRCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFBQyxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUMvQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtZQUNaLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUE0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtZQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsK0JBQStCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7QUFDTCxDQUFDO0FBNUJZLG9CQUFZLGVBNEJ4QixDQUFBIn0= \ No newline at end of file diff --git a/test/test.js b/test/test.js index 6d09e55..a061dc0 100644 --- a/test/test.js +++ b/test/test.js @@ -4,6 +4,7 @@ const shelljs = require('shelljs'); const smartdata = require('../dist/index'); let mongoChildProcess; let testDbConnection; +let testDbCollection; describe('mongodb', function () { it('should start mongodb', function (done) { this.timeout(10000); @@ -17,6 +18,7 @@ describe('smartdata', function () { testDbConnection.connect().then(() => { done(); }); }); it('should create a collection', function () { + testDbCollection = new smartdata.DbCollection('something', testDbConnection); }); it('should close the db Connection', function () { testDbConnection.close(); @@ -24,8 +26,9 @@ describe('smartdata', function () { }); describe('mongodb', function () { it('should kill mongodb', function () { + this.timeout(10000); shelljs.exec('mongod --dbpath=./test/data --shutdown'); mongoChildProcess.kill('SIGTERM'); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FDUCxDQUFDLENBRG9CO0FBQ3JCLE1BQVksT0FBTyxXQUFNLFNBQ3pCLENBQUMsQ0FEaUM7QUFFbEMsTUFBWSxTQUFTLFdBQU0sZUFHM0IsQ0FBQyxDQUh5QztBQUcxQyxJQUFJLGlCQUFpQixDQUFBO0FBQ3JCLElBQUksZ0JBQXdDLENBQUE7QUFHNUMsUUFBUSxDQUFDLFNBQVMsRUFBQztJQUNmLEVBQUUsQ0FBQyxzQkFBc0IsRUFBQyxVQUFTLElBQUk7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuQixpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7UUFDMUYsVUFBVSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQyxnREFBZ0Q7SUFDdkYsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQTtBQUNGLFFBQVEsQ0FBQyxXQUFXLEVBQUM7SUFDakIsRUFBRSxDQUFDLDBDQUEwQyxFQUFDLFVBQVMsSUFBSTtRQUN2RCxnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMscUNBQXFDLENBQUMsQ0FBQTtRQUNwRixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDRCQUE0QixFQUFDO0lBRWhDLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLGdDQUFnQyxFQUFDO1FBQ2hDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUE7QUFFRixRQUFRLENBQUMsU0FBUyxFQUFDO0lBQ2YsRUFBRSxDQUFDLHFCQUFxQixFQUFDO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtRQUN0RCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQSJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FDUCxDQUFDLENBRG9CO0FBQ3JCLE1BQVksT0FBTyxXQUFNLFNBQ3pCLENBQUMsQ0FEaUM7QUFFbEMsTUFBWSxTQUFTLFdBQU0sZUFHM0IsQ0FBQyxDQUh5QztBQUcxQyxJQUFJLGlCQUFpQixDQUFBO0FBQ3JCLElBQUksZ0JBQXdDLENBQUE7QUFDNUMsSUFBSSxnQkFBNkMsQ0FBQTtBQUdqRCxRQUFRLENBQUMsU0FBUyxFQUFDO0lBQ2YsRUFBRSxDQUFDLHNCQUFzQixFQUFDLFVBQVMsSUFBSTtRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25CLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUMxRixVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQSxDQUFDLGdEQUFnRDtJQUN2RixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBO0FBQ0YsUUFBUSxDQUFDLFdBQVcsRUFBQztJQUNqQixFQUFFLENBQUMsMENBQTBDLEVBQUMsVUFBUyxJQUFJO1FBQ3ZELGdCQUFnQixHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO1FBQ3BGLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckQsQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsNEJBQTRCLEVBQUM7UUFDNUIsZ0JBQWdCLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQy9FLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLGdDQUFnQyxFQUFDO1FBQ2hDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUE7QUFFRixRQUFRLENBQUMsU0FBUyxFQUFDO0lBQ2YsRUFBRSxDQUFDLHFCQUFxQixFQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO1FBQ3RELGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index 2bda496..3de3ec1 100644 --- a/test/test.ts +++ b/test/test.ts @@ -6,6 +6,7 @@ import * as smartdata from '../dist/index' let mongoChildProcess let testDbConnection: smartdata.DbConnection +let testDbCollection: smartdata.DbCollection describe('mongodb',function(){ @@ -21,7 +22,7 @@ describe('smartdata',function(){ testDbConnection.connect().then(() => { done() }) }) it('should create a collection',function(){ - + testDbCollection = new smartdata.DbCollection('something',testDbConnection) }) it('should close the db Connection',function(){ testDbConnection.close() @@ -30,6 +31,7 @@ describe('smartdata',function(){ describe('mongodb',function(){ it('should kill mongodb',function(){ + this.timeout(10000) shelljs.exec('mongod --dbpath=./test/data --shutdown') mongoChildProcess.kill('SIGTERM') }) diff --git a/ts/index.ts b/ts/index.ts index 92d063f..533a922 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,39 +1,4 @@ import * as plugins from './smartdata.plugins' -export class DbCollection { - constructor(nameArg: string, db: plugins.mongodb.Db) { - let collection = db.collection(nameArg) - } -} - -export type TDbConnectionStatus = 'disconnected' | 'connected' | 'failed' - -export class DbConnection { - dbUrl: string - db: plugins.mongodb.Db - status: TDbConnectionStatus - - constructor(dbUrl: string) { - this.dbUrl = dbUrl - } - - connect(): plugins.q.Promise { - let done = plugins.q.defer() - plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { - if (err) { console.log(err) } - plugins.assert.equal(null, err) - this.db = db - plugins.beautylog.success(`connected to database at ${this.dbUrl}`) - done.resolve(this.db) - }) - return done.promise - } - - close(): plugins.q.Promise { - let done = plugins.q.defer() - this.db.close() - plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`) - done.resolve() - return done.promise - } -} +export * from './smartdata.classes.dbcollection' +export * from './smartdata.classes.dbconnection' diff --git a/ts/smartdata.classes.dbcollection.ts b/ts/smartdata.classes.dbcollection.ts new file mode 100644 index 0000000..d8e5add --- /dev/null +++ b/ts/smartdata.classes.dbcollection.ts @@ -0,0 +1,24 @@ +import * as plugins from './smartdata.plugins' +import { DbConnection } from './smartdata.classes.dbconnection' + +export class DbCollection { + collection: plugins.mongodb.Collection + constructor(nameArg: string, dbConnectionArg: DbConnection) { + this.collection = dbConnectionArg.db.collection(nameArg) + } + + /** + * adds a validation function that all newly inserted and updated objects have to pass + */ + addObjectValidation(){} + + /** + * inserts am object into the DbCollection + */ + insert(objectArg: T) {} + + /** + * inserts many objects at once into the DbCollection + */ + insertMany(objectArrayArg: T[]) {} +} diff --git a/ts/smartdata.classes.dbconnection.ts b/ts/smartdata.classes.dbconnection.ts new file mode 100644 index 0000000..1b8b5fd --- /dev/null +++ b/ts/smartdata.classes.dbconnection.ts @@ -0,0 +1,33 @@ +import * as plugins from './smartdata.plugins' + +export type TDbConnectionStatus = 'disconnected' | 'connected' | 'failed' + +export class DbConnection { + dbUrl: string + db: plugins.mongodb.Db + status: TDbConnectionStatus + + constructor(dbUrl: string) { + this.dbUrl = dbUrl + } + + connect(): plugins.q.Promise { + let done = plugins.q.defer() + plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { + if (err) { console.log(err) } + plugins.assert.equal(null, err) + this.db = db + plugins.beautylog.success(`connected to database at ${this.dbUrl}`) + done.resolve(this.db) + }) + return done.promise + } + + close(): plugins.q.Promise { + let done = plugins.q.defer() + this.db.close() + plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`) + done.resolve() + return done.promise + } +}