14 Commits

Author SHA1 Message Date
5eed702631 2.0.7 2022-06-09 00:18:05 +02:00
ac5ce0346b fix(core): update 2022-06-09 00:18:05 +02:00
eabda34aca 2.0.6 2022-06-09 00:01:30 +02:00
0e41748da5 fix(core): update 2022-06-09 00:01:29 +02:00
f4586d529d 2.0.5 2022-06-06 17:38:35 +02:00
c09eaf613d fix(core): update 2022-06-06 17:38:35 +02:00
d5ff5b0ed8 2.0.4 2022-06-06 16:51:41 +02:00
1783d72395 fix(core): update 2022-06-06 16:51:41 +02:00
a01755fb9e 2.0.3 2022-06-03 17:31:05 +02:00
3ebf34ee9d fix(core): update 2022-06-03 17:31:04 +02:00
b71a238a3d 2.0.2 2022-05-19 08:48:43 +02:00
d0c7a95e16 fix(core): update 2022-05-19 08:48:43 +02:00
ed38ff50e7 2.0.1 2022-05-18 17:35:17 +02:00
0a3be3e7f4 fix(core): update 2022-05-18 17:35:16 +02:00
6 changed files with 775 additions and 888 deletions

1599
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartmongo",
"version": "2.0.0",
"version": "2.0.7",
"private": false,
"description": "create a local mongodb for testing",
"main": "dist_ts/index.js",
@@ -10,19 +10,21 @@
"license": "MIT",
"scripts": {
"test": "(tstest test/ --web)",
"build": "(tsbuild --web)"
"build": "(tsbuild --web --allowimplicitany)"
},
"devDependencies": {
"@gitzone/tsbuild": "^2.1.61",
"@gitzone/tsbundle": "^2.0.3",
"@gitzone/tsbuild": "^2.1.63",
"@gitzone/tsbundle": "^2.0.5",
"@gitzone/tstest": "^1.0.71",
"@pushrocks/tapbundle": "^5.0.3",
"@types/node": "^17.0.34"
"@types/node": "^17.0.39"
},
"dependencies": {
"@pushrocks/smartdata": "^4.0.27",
"@pushrocks/mongodump": "^1.0.7",
"@pushrocks/smartdata": "^5.0.3",
"@pushrocks/smartpath": "^5.0.5",
"@pushrocks/smartpromise": "^3.1.7",
"mongodb-memory-server": "^8.5.2"
"mongodb-memory-server": "^8.6.0"
},
"browserslist": [
"last 1 chrome versions"

View File

@@ -8,7 +8,7 @@ tap.test('should create a mongo instance', async () => {
});
tap.test('should stop the instance', async () => {
await smartmongoInstance.stop();
await smartmongoInstance.stopAndDumpToDir('.nogit/');
})
tap.start();

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@pushrocks/smartmongo',
version: '2.0.0',
version: '2.0.7',
description: 'create a local mongodb for testing'
}

View File

@@ -14,24 +14,52 @@ export class SmartMongo {
public readyPromise = this._readyDeferred.promise;
public mongoReplicaSet: plugins.mongoPlugin.MongoMemoryReplSet;
constructor() {
}
constructor() {}
public async start(countArg: number = 1) {
this.mongoReplicaSet = await plugins.mongoPlugin.MongoMemoryReplSet.create({ replSet: { count: countArg } });
this.mongoReplicaSet = await plugins.mongoPlugin.MongoMemoryReplSet.create({
replSet: { count: countArg },
instanceOpts: [
{
storageEngine: 'wiredTiger',
},
],
});
this._readyDeferred.resolve();
console.log(`mongoReplicaSet with ${countArg} replicas started.`);
console.log(`@pushrocks/smartmongo version ${commitinfo.version}`);
}
/**
* returns a mongo descriptor for modules like
* @pushrocks/smartfile.
*/
public async getMongoDescriptor(): Promise<plugins.smartdata.IMongoDescriptor> {
await this.readyPromise;
return {
mongoDbName: `smartmongo_testdatabase`,
mongoDbUrl: this.mongoReplicaSet.getUri(),
}
};
}
/**
* stops the smartmongo instance
* and cleans up after itself
*/
public async stop() {
await this.mongoReplicaSet.stop(true);
await this.mongoReplicaSet.stop();
await this.mongoReplicaSet.cleanup();
}
}
/**
* like stop() but allows you to actually store
* the database on disk
*/
public async stopAndDumpToDir(dirArg: string, nameFunctionArg?: (doc: any) => string, emptyDirArg = true) {
const mongodumpInstance = new plugins.mongodump.MongoDump();
const mongodumpTarget = await mongodumpInstance.addMongoTargetByMongoDescriptor(await this.getMongoDescriptor());
await mongodumpTarget.dumpAllCollectionsToDir(dirArg, nameFunctionArg, emptyDirArg);
await mongodumpInstance.stop();
await this.stop();
}
}

View File

@@ -1,9 +1,13 @@
// @pushrocks scope
import * as mongodump from '@pushrocks/mongodump';
import * as smartdata from '@pushrocks/smartdata';
import * as smartpath from '@pushrocks/smartpath';
import * as smartpromise from '@pushrocks/smartpromise';
export {
mongodump,
smartdata,
smartpath,
smartpromise,
}