diff --git a/dist/smartdata.classes.dbcollection.d.ts b/dist/smartdata.classes.dbcollection.d.ts index 05c480c..d42775a 100644 --- a/dist/smartdata.classes.dbcollection.d.ts +++ b/dist/smartdata.classes.dbcollection.d.ts @@ -6,13 +6,17 @@ export declare class DbCollection { /** * adds a validation function that all newly inserted and updated objects have to pass */ - addObjectValidation(): void; + addObjectValidation(funcArg: any): void; /** - * inserts am object into the DbCollection + * finds an object in the DbCollection */ - insert(objectArg: T): void; + find(docMatchArg: T): T[]; + /** + * inserts object into the DbCollection + */ + insertOne(docArg: T): PromiseLike; /** * inserts many objects at once into the DbCollection */ - insertMany(objectArrayArg: T[]): void; + insertMany(docArrayArg: T[]): void; } diff --git a/dist/smartdata.classes.dbcollection.js b/dist/smartdata.classes.dbcollection.js index 5aaa406..d0879b7 100644 --- a/dist/smartdata.classes.dbcollection.js +++ b/dist/smartdata.classes.dbcollection.js @@ -6,15 +6,24 @@ class DbCollection { /** * adds a validation function that all newly inserted and updated objects have to pass */ - addObjectValidation() { } + addObjectValidation(funcArg) { } /** - * inserts am object into the DbCollection + * finds an object in the DbCollection */ - insert(objectArg) { } + find(docMatchArg) { + return this.collection.find().toArray(); + } + /** + * inserts object into the DbCollection + */ + insertOne(docArg) { + return this.collection.insertOne(docArg); + } /** * inserts many objects at once into the DbCollection */ - insertMany(objectArrayArg) { } + insertMany(docArrayArg) { + } } exports.DbCollection = DbCollection; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQTtJQUVJLFlBQVksT0FBZSxFQUFFLGVBQTZCO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLEtBQUcsQ0FBQztJQUV2Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxTQUFZLElBQUcsQ0FBQztJQUV2Qjs7T0FFRztJQUNILFVBQVUsQ0FBQyxjQUFtQixJQUFHLENBQUM7QUFDdEMsQ0FBQztBQXBCWSxvQkFBWSxlQW9CeEIsQ0FBQSJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQTtJQUVJLFlBQVksT0FBZSxFQUFFLGVBQTZCO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsT0FBTyxJQUFFLENBQUM7SUFFOUI7O09BRUc7SUFDSCxJQUFJLENBQUMsV0FBYztRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxNQUFTO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxXQUFnQjtJQUUzQixDQUFDO0FBQ0wsQ0FBQztBQS9CWSxvQkFBWSxlQStCeEIsQ0FBQSJ9 \ No newline at end of file diff --git a/package.json b/package.json index 41791f0..609a59d 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "dist/index.js", "typings": "dist/index.d.ts", "scripts": { - "test": "(npmts)" + "test": "(npm run prepareMongo && npmts)", + "prepareMongo": "(rm -rf ./test/data && mkdir ./test/data/)" }, "repository": { "type": "git", @@ -30,6 +31,7 @@ "@types/should": "^8.1.29", "shelljs": "^0.7.4", "should": "^11.1.0", + "smartstring": "^2.0.17", "typings-test": "^1.0.3" } } diff --git a/test/data/.gitkeep b/test/data/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/test/test.js b/test/test.js index 60b0331..87b0440 100644 --- a/test/test.js +++ b/test/test.js @@ -1,7 +1,7 @@ "use strict"; require('typings-test'); -let portastic = require('portastic'); const shelljs = require('shelljs'); +const smartstring = require('smartstring'); // the tested module const smartdata = require('../dist/index'); let mongoChildProcess; @@ -13,7 +13,7 @@ describe('mongodb', function () { mongoChildProcess = shelljs.exec('mongod --dbpath=./test/data --port 27017', { async: true, silent: true }); let doneCalled = false; mongoChildProcess.stdout.on('data', function (data) { - console.log(data); + console.log(smartstring.indent.indentWithPrefix(data, "*** MongoDB Process *** : ")); if (!doneCalled) { if (/waiting for connections on port 27017/.test(data)) { doneCalled = true; @@ -31,6 +31,9 @@ describe('smartdata', function () { it('should create a collection', function () { testDbCollection = new smartdata.DbCollection('something', testDbConnection); }); + it('should insert something into the collection', function () { + testDbCollection.insertOne({ hello: 'test' }); + }); it('should close the db Connection', function () { testDbConnection.close(); }); @@ -42,4 +45,4 @@ describe('mongodb', function () { mongoChildProcess.kill('SIGTERM'); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FDUCxDQUFDLENBRG9CO0FBQ3JCLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUNwQyxNQUFZLE9BQU8sV0FBTSxTQUd6QixDQUFDLENBSGlDO0FBRWxDLG9CQUFvQjtBQUNwQixNQUFZLFNBQVMsV0FBTSxlQUUzQixDQUFDLENBRnlDO0FBRTFDLElBQUksaUJBQWlCLENBQUE7QUFDckIsSUFBSSxnQkFBd0MsQ0FBQTtBQUM1QyxJQUFJLGdCQUE2QyxDQUFBO0FBRWpELFFBQVEsQ0FBQyxTQUFTLEVBQUU7SUFDaEIsRUFBRSxDQUFDLHNCQUFzQixFQUFFLFVBQVUsSUFBSTtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25CLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzNHLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN0QixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFTLElBQUk7WUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQixFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUM7Z0JBQ2IsRUFBRSxDQUFDLENBQUMsdUNBQXVDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckQsVUFBVSxHQUFHLElBQUksQ0FBQTtvQkFDakIsSUFBSSxFQUFFLENBQUE7Z0JBQ1YsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUE7QUFDRixRQUFRLENBQUMsV0FBVyxFQUFFO0lBQ2xCLEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxVQUFVLElBQUk7UUFDekQsZ0JBQWdCLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7UUFDcEYsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUM3QixnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDaEYsQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDakMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQTtBQUVGLFFBQVEsQ0FBQyxTQUFTLEVBQUU7SUFDaEIsRUFBRSxDQUFDLHFCQUFxQixFQUFFO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO1FBQ3RELGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FFUCxDQUFDLENBRm9CO0FBRXJCLE1BQVksT0FBTyxXQUFNLFNBQ3pCLENBQUMsQ0FEaUM7QUFFbEMsTUFBWSxXQUFXLFdBQU0sYUFHN0IsQ0FBQyxDQUh5QztBQUUxQyxvQkFBb0I7QUFDcEIsTUFBWSxTQUFTLFdBQU0sZUFFM0IsQ0FBQyxDQUZ5QztBQUUxQyxJQUFJLGlCQUFpQixDQUFBO0FBQ3JCLElBQUksZ0JBQXdDLENBQUE7QUFDNUMsSUFBSSxnQkFBNkMsQ0FBQTtBQUVqRCxRQUFRLENBQUMsU0FBUyxFQUFFO0lBQ2hCLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLElBQUk7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuQixpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUMzRyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUE7UUFDdEIsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBUyxJQUFJO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFBO1lBQ25GLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQztnQkFDYixFQUFFLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyRCxVQUFVLEdBQUcsSUFBSSxDQUFBO29CQUNqQixJQUFJLEVBQUUsQ0FBQTtnQkFDVixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQTtBQUNGLFFBQVEsQ0FBQyxXQUFXLEVBQUU7SUFDbEIsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLFVBQVUsSUFBSTtRQUN6RCxnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMscUNBQXFDLENBQUMsQ0FBQTtRQUNwRixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDRCQUE0QixFQUFFO1FBQzdCLGdCQUFnQixHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUNoRixDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyw2Q0FBNkMsRUFBQztRQUM3QyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRTtRQUNqQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBO0FBRUYsUUFBUSxDQUFDLFNBQVMsRUFBRTtJQUNoQixFQUFFLENBQUMscUJBQXFCLEVBQUU7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7UUFDdEQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3JDLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index 9a0a4c7..ac680e3 100644 --- a/test/test.ts +++ b/test/test.ts @@ -2,6 +2,7 @@ import 'typings-test' import * as shelljs from 'shelljs' import * as should from 'should' +import * as smartstring from 'smartstring' // the tested module import * as smartdata from '../dist/index' @@ -16,7 +17,7 @@ describe('mongodb', function () { mongoChildProcess = shelljs.exec('mongod --dbpath=./test/data --port 27017', { async: true, silent: true }) let doneCalled = false mongoChildProcess.stdout.on('data', function(data) { - console.log(data) + console.log(smartstring.indent.indentWithPrefix(data,"*** MongoDB Process *** : ")) if (!doneCalled){ if (/waiting for connections on port 27017/.test(data)) { doneCalled = true @@ -34,6 +35,10 @@ describe('smartdata', function () { it('should create a collection', function () { testDbCollection = new smartdata.DbCollection('something', testDbConnection) }) + it('should insert something into the collection',function(done){ + testDbCollection.insertOne({hello: 'test'}).then(() => { done() }) + }) + it('should find all instances of test') it('should close the db Connection', function () { testDbConnection.close() }) diff --git a/ts/smartdata.classes.dbcollection.ts b/ts/smartdata.classes.dbcollection.ts index d8e5add..3115cb4 100644 --- a/ts/smartdata.classes.dbcollection.ts +++ b/ts/smartdata.classes.dbcollection.ts @@ -10,15 +10,26 @@ export class DbCollection { /** * adds a validation function that all newly inserted and updated objects have to pass */ - addObjectValidation(){} + addObjectValidation(funcArg){} /** - * inserts am object into the DbCollection + * finds an object in the DbCollection */ - insert(objectArg: T) {} + find(docMatchArg: T): T[] { + return this.collection.find().toArray() + } + + /** + * inserts object into the DbCollection + */ + insertOne(docArg: T): PromiseLike { + return this.collection.insertOne(docArg) + } /** * inserts many objects at once into the DbCollection */ - insertMany(objectArrayArg: T[]) {} + insertMany(docArrayArg: T[]): void { + + } }