smartmongo/ts/index.ts
2021-12-20 16:24:04 +01:00

36 lines
878 B
TypeScript

import * as plugins from './smartmongo.plugins';
export class SmartMongo {
// STATIC
public static async createInstance() {
const smartMongoInstance = new SmartMongo();
await smartMongoInstance.readyPromise;
return smartMongoInstance;
}
// INSTANCE
private _readyDeferred = plugins.smartpromise.defer();
public readyPromise = this._readyDeferred.promise;
public mongod: plugins.mongoPlugin.MongoMemoryServer;
constructor() {
this.init();
}
public async init() {
this.mongod = await plugins.mongoPlugin.MongoMemoryServer.create();
this._readyDeferred.resolve();
console.log('mongod started');
}
public async getMongoDescriptor(): Promise<plugins.smartdata.IMongoDescriptor> {
await this.readyPromise;
return {
mongoDbUrl: this.mongod.getUri(),
}
}
public async stop() {
this.mongod.stop();
}
}