8 Commits

Author SHA1 Message Date
1dbbc1ecdb 1.0.6 2022-06-06 16:01:59 +02:00
931b4ce4fd fix(core): update 2022-06-06 16:01:59 +02:00
f4d2225766 1.0.5 2022-06-06 16:01:26 +02:00
2d2bb50578 fix(core): update 2022-06-06 16:01:25 +02:00
a877616739 1.0.4 2022-06-06 13:08:45 +02:00
377177bbbe fix(core): update 2022-06-06 13:08:45 +02:00
35586691f1 1.0.3 2022-06-06 13:04:31 +02:00
32d3ea4d65 fix(core): update 2022-06-06 13:04:30 +02:00
10 changed files with 91 additions and 20 deletions

10
package-lock.json generated
View File

@@ -1,16 +1,18 @@
{ {
"name": "@pushrocks/mongodump", "name": "@pushrocks/mongodump",
"version": "1.0.2", "version": "1.0.6",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@pushrocks/mongodump", "name": "@pushrocks/mongodump",
"version": "1.0.2", "version": "1.0.6",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@pushrocks/lik": "^6.0.0", "@pushrocks/lik": "^6.0.0",
"@pushrocks/smartfile": "^9.0.6", "@pushrocks/smartfile": "^9.0.6",
"@pushrocks/smartjson": "^4.0.6",
"@pushrocks/smartpath": "^5.0.5",
"@pushrocks/smartpromise": "^3.1.7", "@pushrocks/smartpromise": "^3.1.7",
"@tsclass/tsclass": "^4.0.3", "@tsclass/tsclass": "^4.0.3",
"mongodb": "^4.6.0" "mongodb": "^4.6.0"
@@ -686,7 +688,6 @@
"version": "5.0.5", "version": "5.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpath/-/smartpath-5.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpath/-/smartpath-5.0.5.tgz",
"integrity": "sha512-t2lXXGMpKnPlwubIcYGD6cGi2CUJxJ3t2yftVt8tHfjX68jELA5sJhFMtyD3AeFZVxePFZOCiHwWEbWkSDNnmw==", "integrity": "sha512-t2lXXGMpKnPlwubIcYGD6cGi2CUJxJ3t2yftVt8tHfjX68jELA5sJhFMtyD3AeFZVxePFZOCiHwWEbWkSDNnmw==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@pushrocks/smartpdf": { "node_modules/@pushrocks/smartpdf": {
@@ -6944,8 +6945,7 @@
"@pushrocks/smartpath": { "@pushrocks/smartpath": {
"version": "5.0.5", "version": "5.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpath/-/smartpath-5.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpath/-/smartpath-5.0.5.tgz",
"integrity": "sha512-t2lXXGMpKnPlwubIcYGD6cGi2CUJxJ3t2yftVt8tHfjX68jELA5sJhFMtyD3AeFZVxePFZOCiHwWEbWkSDNnmw==", "integrity": "sha512-t2lXXGMpKnPlwubIcYGD6cGi2CUJxJ3t2yftVt8tHfjX68jELA5sJhFMtyD3AeFZVxePFZOCiHwWEbWkSDNnmw=="
"dev": true
}, },
"@pushrocks/smartpdf": { "@pushrocks/smartpdf": {
"version": "3.0.2", "version": "3.0.2",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/mongodump", "name": "@pushrocks/mongodump",
"version": "1.0.2", "version": "1.0.6",
"private": false, "private": false,
"description": "a tool to handle dumps of mongodb databases", "description": "a tool to handle dumps of mongodb databases",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
@@ -39,6 +39,8 @@
"dependencies": { "dependencies": {
"@pushrocks/lik": "^6.0.0", "@pushrocks/lik": "^6.0.0",
"@pushrocks/smartfile": "^9.0.6", "@pushrocks/smartfile": "^9.0.6",
"@pushrocks/smartjson": "^4.0.6",
"@pushrocks/smartpath": "^5.0.5",
"@pushrocks/smartpromise": "^3.1.7", "@pushrocks/smartpromise": "^3.1.7",
"@tsclass/tsclass": "^4.0.3", "@tsclass/tsclass": "^4.0.3",
"mongodb": "^4.6.0" "mongodb": "^4.6.0"

View File

@@ -19,7 +19,22 @@ export const generateTestData = async (mongoDescriptorArg: smartdata.IMongoDescr
@smartdata.svDb() @smartdata.svDb()
data = { data = {
'some' : { 'some' : {
'complex': 'structure' 'complex': 'structure',
more: 4
}
}
}
@smartdata.Collection(db)
class Truck extends smartdata.SmartDataDbDoc<Truck, Truck> {
@smartdata.unI()
id = `hello-${counter}`;
@smartdata.svDb()
data = {
'some' : {
'complex': 'structure',
more: 2
} }
} }
} }
@@ -27,6 +42,8 @@ export const generateTestData = async (mongoDescriptorArg: smartdata.IMongoDescr
while (counter < 100) { while (counter < 100) {
const house = new House(); const house = new House();
await house.save(); await house.save();
const truck = new Truck();
await truck.save();
counter++; counter++;
} }
} }

View File

@@ -23,6 +23,11 @@ tap.test('should deploy sample data', async () => {
tap.test('should add a mongotarget to mongodump instance', async () => { tap.test('should add a mongotarget to mongodump instance', async () => {
const target = await testMongodump.addMongoTargetByMongoDescriptor(await testSmartMongo.getMongoDescriptor()); const target = await testMongodump.addMongoTargetByMongoDescriptor(await testSmartMongo.getMongoDescriptor());
await target.getCollections(); await target.getCollections();
});
tap.test('should dump a collection to a directory', async () => {
const target = await testMongodump.addMongoTargetByMongoDescriptor(await testSmartMongo.getMongoDescriptor());
await target.dumpAllCollectionsToDir('.nogit', docArg => docArg.id, true);
}) })
tap.test('should stop the smartmongo instance', async () => { tap.test('should stop the smartmongo instance', async () => {

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@pushrocks/mongodump', name: '@pushrocks/mongodump',
version: '1.0.2', version: '1.0.6',
description: 'a tool to handle dumps of mongodb databases' description: 'a tool to handle dumps of mongodb databases'
} }

View File

@@ -1,2 +1,3 @@
export * from './mongodb.classes.mongodump.js'; export * from './mongodump.classes.mongodump.js';
export * from './mongodb.classes.mongodumptarget.js'; export * from './mongodump.classes.mongodumptarget.js';

View File

@@ -6,5 +6,5 @@ import * as plugins from './mongodump.plugins.js';
* *
*/ */
export class MongoCompressedDump { export class MongoCompressedDump {
} }

View File

@@ -1,5 +1,5 @@
import * as plugins from './mongodump.plugins.js'; import * as plugins from './mongodump.plugins.js';
import { MongoDumpTarget } from './mongodb.classes.mongodumptarget.js'; import { MongoDumpTarget } from './mongodump.classes.mongodumptarget.js';
export class MongoDump { export class MongoDump {
public mongoTargetObjectMap = new plugins.lik.ObjectMap<MongoDumpTarget>(); public mongoTargetObjectMap = new plugins.lik.ObjectMap<MongoDumpTarget>();

View File

@@ -5,9 +5,7 @@ import * as plugins from './mongodump.plugins.js';
* + exposes functions to interact with the dump target * + exposes functions to interact with the dump target
*/ */
export class MongoDumpTarget { export class MongoDumpTarget {
public static async createAndInit( public static async createAndInit(mongoDescriptorArg: plugins.tsclass.database.IMongoDescriptor) {
mongoDescriptorArg: plugins.tsclass.database.IMongoDescriptor
) {
const mongoDumpTarget = new MongoDumpTarget(mongoDescriptorArg); const mongoDumpTarget = new MongoDumpTarget(mongoDescriptorArg);
await mongoDumpTarget.init(); await mongoDumpTarget.init();
return mongoDumpTarget; return mongoDumpTarget;
@@ -61,11 +59,48 @@ export class MongoDumpTarget {
/** /**
* dumps a collection to a directory * dumps a collection to a directory
*/ */
public async dumpCollectionToDir(collectionArg: plugins.mongodb.Collection, dirArg: string) { public async dumpCollectionToDir(
collectionArg: plugins.mongodb.Collection,
dirArg: string,
nameTransformFunction = (doc: any) => doc._id
) {
const dirPath = plugins.smartpath.transform.makeAbsolute(dirArg);
const collectionDir = plugins.path.join(dirPath, collectionArg.collectionName);
await plugins.smartfile.fs.ensureDir(collectionDir);
const cursor = collectionArg.find();
let value = await cursor.next();
while (value) {
await plugins.smartfile.memory.toFs(
JSON.stringify(value, null, 2),
plugins.path.join(collectionDir, `${nameTransformFunction(value)}.json`)
);
value = await cursor.next();
}
} }
public async dumpCollectionToTarArchive(collectionArg: plugins.mongodb.Collection) {} public async dumpCollectionToTarArchiveStream(collectionArg: plugins.mongodb.Collection) {}
public async dumpAllCollectionsToDir() {} public async dumpCollectionToTarArchiveFile(
collectionArg: plugins.mongodb.Collection,
filePathArg: string
) {}
public async dumpAllCollectionsToDir(
dirArg: string,
nameFunctionArg?: (docArg: any) => string,
cleanDirArg = false
) {
if (cleanDirArg) {
await plugins.smartfile.fs.ensureEmptyDir(dirArg);
}
const collections = await this.getCollections();
for (const collection of collections) {
await this.dumpCollectionToDir(collection, dirArg, nameFunctionArg);
}
}
public async dumpAllCollectionsToTarArchiveStream(
collectionArg: plugins.mongodb.Collection,
filePathArg: string
) {}
} }

View File

@@ -1,11 +1,22 @@
// node native
import * as path from 'path';
export {
path
}
// pushrocks scope // pushrocks scope
import * as lik from '@pushrocks/lik'; import * as lik from '@pushrocks/lik';
import * as smartfile from '@pushrocks/smartfile'; import * as smartfile from '@pushrocks/smartfile';
import * as smartjson from '@pushrocks/smartjson';
import * as smartpath from '@pushrocks/smartpath';
import * as smartpromise from '@pushrocks/smartpromise'; import * as smartpromise from '@pushrocks/smartpromise';
export { export {
lik, lik,
smartfile, smartfile,
smartjson,
smartpath,
smartpromise smartpromise
} }