2016-09-11 16:01:46 +00:00
|
|
|
"use strict";
|
2016-09-12 16:14:01 +00:00
|
|
|
const plugins = require('./smartdata.plugins');
|
2016-09-11 16:01:46 +00:00
|
|
|
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
|
|
|
|
*/
|
2016-09-12 15:31:23 +00:00
|
|
|
addObjectValidation(funcArg) { }
|
2016-09-11 16:01:46 +00:00
|
|
|
/**
|
2016-09-12 15:31:23 +00:00
|
|
|
* finds an object in the DbCollection
|
2016-09-11 16:01:46 +00:00
|
|
|
*/
|
2016-09-12 15:31:23 +00:00
|
|
|
find(docMatchArg) {
|
2016-09-12 16:14:01 +00:00
|
|
|
let done = plugins.q.defer();
|
2016-09-12 19:36:26 +00:00
|
|
|
this.collection.find(docMatchArg).toArray((err, docs) => {
|
2016-09-12 16:14:01 +00:00
|
|
|
if (err) {
|
|
|
|
throw err;
|
|
|
|
}
|
|
|
|
done.resolve(docs);
|
|
|
|
});
|
|
|
|
return done.promise;
|
2016-09-12 15:31:23 +00:00
|
|
|
}
|
|
|
|
/**
|
|
|
|
* inserts object into the DbCollection
|
|
|
|
*/
|
|
|
|
insertOne(docArg) {
|
2016-09-12 16:14:01 +00:00
|
|
|
let done = plugins.q.defer();
|
|
|
|
this.checkDoc(docArg).then(() => {
|
|
|
|
this.collection.insertOne(docArg)
|
|
|
|
.then(() => { done.resolve(); });
|
|
|
|
});
|
|
|
|
return done.promise;
|
2016-09-12 15:31:23 +00:00
|
|
|
}
|
2016-09-11 16:01:46 +00:00
|
|
|
/**
|
|
|
|
* inserts many objects at once into the DbCollection
|
|
|
|
*/
|
2016-09-12 15:31:23 +00:00
|
|
|
insertMany(docArrayArg) {
|
2016-09-12 16:14:01 +00:00
|
|
|
let done = plugins.q.defer();
|
|
|
|
let checkDocPromiseArray = [];
|
|
|
|
for (let docArg of docArrayArg) {
|
|
|
|
checkDocPromiseArray.push(this.checkDoc(docArg));
|
|
|
|
}
|
|
|
|
plugins.q.all(checkDocPromiseArray).then(() => {
|
2016-09-12 19:36:26 +00:00
|
|
|
this.collection.insertMany(docArrayArg)
|
|
|
|
.then(() => { done.resolve(); });
|
2016-09-12 16:14:01 +00:00
|
|
|
});
|
|
|
|
return done.promise;
|
|
|
|
}
|
|
|
|
checkDoc(doc) {
|
|
|
|
let done = plugins.q.defer();
|
|
|
|
done.resolve();
|
|
|
|
return done.promise;
|
2016-09-12 15:31:23 +00:00
|
|
|
}
|
2016-09-11 16:01:46 +00:00
|
|
|
}
|
|
|
|
exports.DbCollection = DbCollection;
|
2016-09-12 20:11:17 +00:00
|
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxxQkFDekIsQ0FBQyxDQUQ2QztBQUc5QztJQUVJLFlBQVksT0FBZSxFQUFFLGVBQTZCO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsT0FBTyxJQUFJLENBQUM7SUFFaEM7O09BRUc7SUFDSCxJQUFJLENBQUMsV0FBb0I7UUFDckIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQU8sQ0FBQTtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSTtZQUNoRCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sR0FBRyxDQUFBO1lBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLE1BQVM7UUFDZixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBUSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztpQkFDNUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsV0FBZ0I7UUFDdkIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQVEsQ0FBQTtRQUNsQyxJQUFJLG9CQUFvQixHQUE4QixFQUFFLENBQUE7UUFDeEQsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksV0FBVyxDQUFDLENBQUEsQ0FBQztZQUM1QixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQ3BELENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7aUJBQ2xDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUFNO1FBQ25CLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFRLENBQUE7UUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztBQUNMLENBQUM7QUF4RFksb0JBQVksZUF3RHhCLENBQUEifQ==
|