diff --git a/twake/backend/node/src/cli/cmds/migration_cmds/drive.ts b/twake/backend/node/src/cli/cmds/migration_cmds/drive.ts index eb17607c7..89ae6a654 100644 --- a/twake/backend/node/src/cli/cmds/migration_cmds/drive.ts +++ b/twake/backend/node/src/cli/cmds/migration_cmds/drive.ts @@ -24,13 +24,26 @@ const services = [ const command: yargs.CommandModule = { command: "drive", describe: "migrate php drive items to node", - builder: {}, - handler: async _argv => { - console.log("test"); + builder: { + from: { + default: null, + type: "string", + description: "Start migration from this company ID", + }, + onlyCompany: { + default: null, + type: "string", + description: "Migrate only this company ID", + }, + }, + handler: async argv => { + const from = argv.from as string | null; + const onlyCompany = argv.onlyCompany as string | null; + const spinner = ora({ text: "Migrating php drive - " }).start(); const platform = await twake.run(services); await globalResolver.doInit(platform); - const migrator = new DriveMigrator(platform); + const migrator = new DriveMigrator(platform, { fromCompany: from, onlyCompany }); await migrator.run(); diff --git a/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/drive-migrator-service.ts b/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/drive-migrator-service.ts index 8d0c19f07..65a794747 100644 --- a/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/drive-migrator-service.ts +++ b/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/drive-migrator-service.ts @@ -30,8 +30,19 @@ interface WorkspaceExecutionContext extends CompanyExecutionContext { class DriveMigrator { private phpDriveService: PhpDriveFileService; private nodeRepository: Repository; + private options: { + fromCompany?: string; + onlyCompany?: string; + }; - constructor(readonly _platform: TwakePlatform) { + constructor( + readonly _platform: TwakePlatform, + options?: { + fromCompany?: string; + onlyCompany?: string; + }, + ) { + this.options = options; this.phpDriveService = new PhpDriveFileService(); } @@ -59,7 +70,15 @@ class DriveMigrator { const companyListResult = await globalResolver.services.companies.getCompanies(page); page = companyListResult.nextPage as Pagination; + let didPassFromCompany = false; + for (const company of companyListResult.getEntities()) { + if (this.options.onlyCompany && this.options.onlyCompany !== company.id) continue; + if (this.options.fromCompany && this.options.fromCompany === company.id) { + didPassFromCompany = true; + } + if (this.options.fromCompany && !didPassFromCompany) continue; + await this.migrateCompany(company, { ...context, company: { id: company.id },