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
+ }
+}