fix(core): update
This commit is contained in:
8
ts/00_commitinfo_data.ts
Normal file
8
ts/00_commitinfo_data.ts
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* autocreated commitinfo by @pushrocks/commitinfo
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@pushrocks/smartdata',
|
||||
version: '4.0.28',
|
||||
description: 'do more with data'
|
||||
}
|
12
ts/index.ts
12
ts/index.ts
@ -1,7 +1,7 @@
|
||||
export * from './smartdata.classes.db';
|
||||
export * from './smartdata.classes.collection';
|
||||
export * from './smartdata.classes.doc';
|
||||
export * from './smartdata.classes.easystore';
|
||||
export * from './smartdata.classes.cursor';
|
||||
export * from './smartdata.classes.db.js';
|
||||
export * from './smartdata.classes.collection.js';
|
||||
export * from './smartdata.classes.doc.js';
|
||||
export * from './smartdata.classes.easystore.js';
|
||||
export * from './smartdata.classes.cursor.js';
|
||||
|
||||
export { IMongoDescriptor } from './interfaces';
|
||||
export type { IMongoDescriptor } from './interfaces/index.js';
|
||||
|
@ -1 +1 @@
|
||||
export * from './mongodescriptor';
|
||||
export * from './mongodescriptor.js';
|
||||
|
@ -1,8 +1,9 @@
|
||||
import * as plugins from './smartdata.plugins';
|
||||
import { SmartdataDb } from './smartdata.classes.db';
|
||||
import { SmartdataDbCursor } from './smartdata.classes.cursor';
|
||||
import { SmartDataDbDoc } from './smartdata.classes.doc';
|
||||
import { CollectionFactory } from './smartdata.classes.collectionfactory';
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
import { SmartdataDb } from './smartdata.classes.db.js';
|
||||
import { SmartdataDbCursor } from './smartdata.classes.cursor.js';
|
||||
import { SmartDataDbDoc } from './smartdata.classes.doc.js';
|
||||
import { SmartdataDbWatcher } from './smartdata.classes.watcher.js';
|
||||
import { CollectionFactory } from './smartdata.classes.collectionfactory.js';
|
||||
|
||||
export interface IFindOptions {
|
||||
limit?: number;
|
||||
@ -196,6 +197,19 @@ export class SmartdataCollection<T> {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* watches the collection while applying a filter
|
||||
*/
|
||||
public async watch(filterObject: any): Promise<SmartdataDbWatcher> {
|
||||
await this.init();
|
||||
const changeStream = this.mongoDbCollection.watch([
|
||||
{
|
||||
$match: filterObject
|
||||
}
|
||||
]);
|
||||
return new SmartdataDbWatcher(changeStream);
|
||||
}
|
||||
|
||||
/**
|
||||
* create an object in the database
|
||||
*/
|
||||
|
@ -1,6 +1,6 @@
|
||||
import * as plugins from './smartdata.plugins';
|
||||
import { SmartdataCollection } from './smartdata.classes.collection';
|
||||
import { SmartdataDb } from './smartdata.classes.db';
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
import { SmartdataCollection } from './smartdata.classes.collection.js';
|
||||
import { SmartdataDb } from './smartdata.classes.db.js';
|
||||
|
||||
export class CollectionFactory {
|
||||
public collections: { [key: string]: SmartdataCollection<any> } = {};
|
||||
|
@ -1,4 +1,4 @@
|
||||
import * as plugins from './smartdata.plugins';
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
|
||||
/**
|
||||
* a wrapper for the native mongodb cursor. Exposes better
|
||||
|
@ -1,11 +1,11 @@
|
||||
import * as plugins from './smartdata.plugins';
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
import { ObjectMap } from '@pushrocks/lik';
|
||||
|
||||
import { SmartdataCollection } from './smartdata.classes.collection';
|
||||
import { EasyStore } from './smartdata.classes.easystore';
|
||||
import { SmartdataCollection } from './smartdata.classes.collection.js';
|
||||
import { EasyStore } from './smartdata.classes.easystore.js';
|
||||
|
||||
import { logger } from './smartdata.logging';
|
||||
import { IMongoDescriptor } from './interfaces';
|
||||
import { logger } from './smartdata.logging.js';
|
||||
import { IMongoDescriptor } from './interfaces/index.js';
|
||||
|
||||
/**
|
||||
* interface - indicates the connection status of the db
|
||||
|
@ -1,10 +1,11 @@
|
||||
import * as plugins from './smartdata.plugins';
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
|
||||
import { ObjectMap } from '@pushrocks/lik';
|
||||
|
||||
import { SmartdataDb } from './smartdata.classes.db';
|
||||
import { SmartdataDbCursor } from './smartdata.classes.cursor';
|
||||
import { IManager, SmartdataCollection } from './smartdata.classes.collection';
|
||||
import { SmartdataDb } from './smartdata.classes.db.js';
|
||||
import { SmartdataDbCursor } from './smartdata.classes.cursor.js';
|
||||
import { IManager, SmartdataCollection } from './smartdata.classes.collection.js';
|
||||
import { SmartdataDbWatcher } from './smartdata.classes.watcher.js';
|
||||
|
||||
export type TDocCreation = 'db' | 'new' | 'mixed';
|
||||
|
||||
@ -77,36 +78,7 @@ export class SmartDataDbDoc<T extends TImplements, TImplements, TManager extends
|
||||
public static manager;
|
||||
public manager: TManager;
|
||||
|
||||
/**
|
||||
* how the Doc in memory was created, may prove useful later.
|
||||
*/
|
||||
public creationStatus: TDocCreation = 'new';
|
||||
|
||||
/**
|
||||
* unique indexes
|
||||
*/
|
||||
public uniqueIndexes: string[];
|
||||
|
||||
/**
|
||||
* an array of saveable properties of a doc
|
||||
*/
|
||||
public saveableProperties: string[];
|
||||
|
||||
/**
|
||||
* name
|
||||
*/
|
||||
public name: string;
|
||||
|
||||
/**
|
||||
* primary id in the database
|
||||
*/
|
||||
public dbDocUniqueId: string;
|
||||
|
||||
/**
|
||||
* class constructor
|
||||
*/
|
||||
constructor() {}
|
||||
|
||||
// STATIC
|
||||
public static createInstanceFromMongoDbNativeDoc<T>(
|
||||
this: plugins.tsclass.typeFest.Class<T>,
|
||||
mongoDbNativeDocArg: any
|
||||
@ -171,6 +143,23 @@ export class SmartDataDbDoc<T extends TImplements, TImplements, TManager extends
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* watch the collection
|
||||
* @param this
|
||||
* @param filterArg
|
||||
* @param forEachFunction
|
||||
*/
|
||||
public static async watch<T>(
|
||||
this: plugins.tsclass.typeFest.Class<T>,
|
||||
filterArg: plugins.tsclass.typeFest.PartialDeep<T>
|
||||
) {
|
||||
const collection: SmartdataCollection<T> = (this as any).collection;
|
||||
const watcher: SmartdataDbWatcher<T> = await collection.watch(
|
||||
convertFilterForMongoDb(filterArg)
|
||||
);
|
||||
return watcher;
|
||||
}
|
||||
|
||||
/**
|
||||
* run a function for all instances
|
||||
* @returns
|
||||
@ -184,6 +173,38 @@ export class SmartDataDbDoc<T extends TImplements, TImplements, TManager extends
|
||||
await cursor.forEach(forEachFunction);
|
||||
}
|
||||
|
||||
// INSTANCE
|
||||
|
||||
/**
|
||||
* how the Doc in memory was created, may prove useful later.
|
||||
*/
|
||||
public creationStatus: TDocCreation = 'new';
|
||||
|
||||
/**
|
||||
* unique indexes
|
||||
*/
|
||||
public uniqueIndexes: string[];
|
||||
|
||||
/**
|
||||
* an array of saveable properties of a doc
|
||||
*/
|
||||
public saveableProperties: string[];
|
||||
|
||||
/**
|
||||
* name
|
||||
*/
|
||||
public name: string;
|
||||
|
||||
/**
|
||||
* primary id in the database
|
||||
*/
|
||||
public dbDocUniqueId: string;
|
||||
|
||||
/**
|
||||
* class constructor
|
||||
*/
|
||||
constructor() {}
|
||||
|
||||
/**
|
||||
* saves this instance but not any connected items
|
||||
* may lead to data inconsistencies, but is faster
|
||||
|
@ -1,7 +1,7 @@
|
||||
import * as plugins from './smartdata.plugins';
|
||||
import { Collection } from './smartdata.classes.collection';
|
||||
import { SmartdataDb } from './smartdata.classes.db';
|
||||
import { SmartDataDbDoc, svDb, unI } from './smartdata.classes.doc';
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
import { Collection } from './smartdata.classes.collection.js';
|
||||
import { SmartdataDb } from './smartdata.classes.db.js';
|
||||
import { SmartDataDbDoc, svDb, unI } from './smartdata.classes.doc.js';
|
||||
|
||||
/**
|
||||
* EasyStore allows the storage of easy objects. It also allows easy sharing of the object between different instances
|
||||
|
22
ts/smartdata.classes.watcher.ts
Normal file
22
ts/smartdata.classes.watcher.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
|
||||
/**
|
||||
* a wrapper for the native mongodb cursor. Exposes better
|
||||
*/
|
||||
export class SmartdataDbWatcher<T = any> {
|
||||
// STATIC
|
||||
|
||||
// INSTANCE
|
||||
public changeStream: plugins.mongodb.ChangeStream<T>;
|
||||
public changeSubject = new plugins.smartrx.rxjs.Subject<T>();
|
||||
constructor(changeStreamArg: plugins.mongodb.ChangeStream<T>) {
|
||||
this.changeStream = changeStreamArg;
|
||||
this.changeStream.on('change', (item: T) => {
|
||||
this.changeSubject.next(item);
|
||||
})
|
||||
}
|
||||
|
||||
public async close() {
|
||||
await this.changeStream.close();
|
||||
}
|
||||
}
|
@ -1,3 +1,3 @@
|
||||
import * as plugins from './smartdata.plugins';
|
||||
import * as plugins from './smartdata.plugins.js';
|
||||
|
||||
export const logger = new plugins.smartlog.ConsoleLog();
|
||||
|
@ -8,7 +8,8 @@ import * as smartlog from '@pushrocks/smartlog';
|
||||
import * as lodash from 'lodash';
|
||||
import * as mongodb from 'mongodb';
|
||||
import * as smartq from '@pushrocks/smartpromise';
|
||||
import * as smartrx from '@pushrocks/smartrx';
|
||||
import * as smartstring from '@pushrocks/smartstring';
|
||||
import * as smartunique from '@pushrocks/smartunique';
|
||||
|
||||
export { smartlog, lodash, smartq, mongodb, smartstring, smartunique };
|
||||
export { smartlog, lodash, smartq, smartrx, mongodb, smartstring, smartunique };
|
||||
|
Reference in New Issue
Block a user