fix(core): update
This commit is contained in:
		@@ -27,10 +27,7 @@ tap.test('should add a mongotarget to mongodump instance', async () => {
 | 
			
		||||
 | 
			
		||||
tap.test('should dump a collection to a directory', async () => {
 | 
			
		||||
  const target = await testMongodump.addMongoTargetByMongoDescriptor(await testSmartMongo.getMongoDescriptor());
 | 
			
		||||
  const collections = await target.getCollections();
 | 
			
		||||
  for (const collection of collections) {
 | 
			
		||||
    await target.dumpCollectionToDir(collection, '.nogit', doc => doc.id);
 | 
			
		||||
  }
 | 
			
		||||
  await target.dumpAllCollectionsToDir('.nogit', docArg => docArg.id, true);
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
tap.test('should stop the smartmongo instance', async () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,6 @@
 | 
			
		||||
 */
 | 
			
		||||
export const commitinfo = {
 | 
			
		||||
  name: '@pushrocks/mongodump',
 | 
			
		||||
  version: '1.0.4',
 | 
			
		||||
  version: '1.0.5',
 | 
			
		||||
  description: 'a tool to handle dumps of mongodb databases'
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,7 @@ import * as plugins from './mongodump.plugins.js';
 | 
			
		||||
 * + exposes functions to interact with the dump target
 | 
			
		||||
 */
 | 
			
		||||
export class MongoDumpTarget {
 | 
			
		||||
  public static async createAndInit(
 | 
			
		||||
    mongoDescriptorArg: plugins.tsclass.database.IMongoDescriptor
 | 
			
		||||
  ) {
 | 
			
		||||
  public static async createAndInit(mongoDescriptorArg: plugins.tsclass.database.IMongoDescriptor) {
 | 
			
		||||
    const mongoDumpTarget = new MongoDumpTarget(mongoDescriptorArg);
 | 
			
		||||
    await mongoDumpTarget.init();
 | 
			
		||||
    return mongoDumpTarget;
 | 
			
		||||
@@ -61,19 +59,48 @@ export class MongoDumpTarget {
 | 
			
		||||
  /**
 | 
			
		||||
   * dumps a collection to a directory
 | 
			
		||||
   */
 | 
			
		||||
  public async dumpCollectionToDir(collectionArg: plugins.mongodb.Collection, dirArg: string, nameTransformFunction = (doc: any) => doc._id) {
 | 
			
		||||
  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`));
 | 
			
		||||
    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
 | 
			
		||||
  ) {}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user