Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
bbcb3a614e | |||
941d2f0902 | |||
5c78f83a28 | |||
124f117352 |
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartdata",
|
||||
"version": "3.1.7",
|
||||
"version": "3.1.9",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartdata",
|
||||
"version": "3.1.7",
|
||||
"version": "3.1.9",
|
||||
"private": false,
|
||||
"description": "do more with data",
|
||||
"main": "dist/index.js",
|
||||
|
@ -1,5 +1,5 @@
|
||||
export interface IMongoDescriptor {
|
||||
connectionUrl: string;
|
||||
password: string;
|
||||
database: string;
|
||||
mongoDbName: string;
|
||||
mongoDbUrl: string;
|
||||
mongoDbPass: string;
|
||||
}
|
||||
|
@ -13,13 +13,23 @@ export interface IDocValidationFunc<T> {
|
||||
(doc: T): boolean;
|
||||
}
|
||||
|
||||
export type TDelayedDbCreation = () => SmartdataDb;
|
||||
|
||||
/**
|
||||
* This is a decorator that will tell the decorated class what dbTable to use
|
||||
* @param db
|
||||
* @param dbArg
|
||||
*/
|
||||
export function Collection(db: SmartdataDb) {
|
||||
export function Collection(dbArg: SmartdataDb | TDelayedDbCreation) {
|
||||
return function(constructor) {
|
||||
constructor['smartdataCollection'] = new SmartdataCollection(constructor, db);
|
||||
if (dbArg instanceof SmartdataDb) {
|
||||
// tslint:disable-next-line: no-string-literal
|
||||
constructor['smartdataCollection'] = new SmartdataCollection(constructor, dbArg);
|
||||
} else {
|
||||
constructor['smartdataDelayedDatabase'] = () => {
|
||||
return new SmartdataCollection(constructor, dbArg());
|
||||
};
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,16 @@ export class SmartDataDbDoc<T> {
|
||||
*/
|
||||
constructor() {
|
||||
this.name = this.constructor['name'];
|
||||
this.collection = this.constructor['smartdataCollection'];
|
||||
if(this.constructor['smartdataCollection']) {
|
||||
// tslint:disable-next-line: no-string-literal
|
||||
this.collection = this.constructor['smartdataCollection'];
|
||||
// tslint:disable-next-line: no-string-literal
|
||||
} else if (typeof this.constructor['smartdataDelayedDatabase'] === 'function') {
|
||||
// tslint:disable-next-line: no-string-literal
|
||||
this.collection = this.constructor['smartdataDelayedDatabase']();
|
||||
} else {
|
||||
console.error('Could not determine collection for DbDoc');
|
||||
}
|
||||
}
|
||||
|
||||
static async getInstances<T>(filterArg): Promise<T[]> {
|
||||
@ -109,6 +118,7 @@ export class SmartDataDbDoc<T> {
|
||||
* may lead to data inconsistencies, but is faster
|
||||
*/
|
||||
async save() {
|
||||
// tslint:disable-next-line: no-this-assignment
|
||||
let self: any = this;
|
||||
switch (this.creationStatus) {
|
||||
case 'db':
|
||||
|
Reference in New Issue
Block a user