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 e5dba126e3..eb17607c73 100644 --- a/twake/backend/node/src/cli/cmds/migration_cmds/drive.ts +++ b/twake/backend/node/src/cli/cmds/migration_cmds/drive.ts @@ -18,6 +18,7 @@ const services = [ "tracker", "websocket", "email-pusher", + "files", ]; const command: yargs.CommandModule = { 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 2c28b2a133..b5e98da1e0 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 @@ -80,7 +80,13 @@ class DriveMigrator { logger.info(`Migrating company ${company.id}`); const companyAdminOrOwnerId = await this.getCompanyOwnerOrAdminId(company.id, context); + if (!companyAdminOrOwnerId) { + return; + } const workspaceList = await globalResolver.services.workspaces.getAllForCompany(company.id); + if (!workspaceList || workspaceList.length === 0) { + return; + } for (const workspace of workspaceList) { const wsContext = { @@ -252,6 +258,9 @@ class DriveMigrator { context, ); + logger.info( + `Migrating version ${version.id} of item ${item.id}... (downloading then uploading...)`, + ); const file = await this.phpDriveService.migrate( version.file_id, item.workspace_id, @@ -331,6 +340,9 @@ class DriveMigrator { { pagination }, context, ); + if (!companyUsers.getEntities().length && !pagination?.page_token) { + return null; + } pagination = companyUsers.nextPage as Pagination; @@ -341,7 +353,7 @@ class DriveMigrator { if (companyAdminOrOwner) { companyOwnerOrAdminId = companyAdminOrOwner.id; } - } while (pagination && !companyOwnerOrAdminId); + } while (pagination?.page_token && !companyOwnerOrAdminId); return companyOwnerOrAdminId; }; diff --git a/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-entity.ts b/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-entity.ts index 05b3268017..74b873017f 100644 --- a/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-entity.ts +++ b/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-entity.ts @@ -12,7 +12,7 @@ export const TYPE = "drive_file"; }) export class PhpDriveFile { @Type(() => String) - @Column("workspace_id", "timeuuid") + @Column("workspace_id", "string") workspace_id: string; @Type(() => String) diff --git a/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-version-entity.ts b/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-version-entity.ts index 69ecdd052b..b722fb0502 100644 --- a/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-version-entity.ts +++ b/twake/backend/node/src/cli/cmds/migration_cmds/php-drive-file/php-drive-file-version-entity.ts @@ -16,7 +16,7 @@ export class PhpDriveFileVersion { id: string; @Type(() => String) - @Column("file_id", "string") + @Column("file_id", "timeuuid") file_id: string; @Type(() => String) diff --git a/twake/backend/node/src/core/platform/services/message-queue/amqp/index.ts b/twake/backend/node/src/core/platform/services/message-queue/amqp/index.ts index 4c14a20d61..36dccbaddb 100644 --- a/twake/backend/node/src/core/platform/services/message-queue/amqp/index.ts +++ b/twake/backend/node/src/core/platform/services/message-queue/amqp/index.ts @@ -9,7 +9,6 @@ import { } from "../api"; import MessageQueueProxy from "../proxy"; import { AMQPMessageQueueManager } from "./manager"; -import { SkipCLI } from "../../../framework/decorators/skip"; const logger = rootLogger.child({ component: "twake.core.platform.services.message-queue.amqp", @@ -28,7 +27,6 @@ export class AMQPMessageQueueService implements MessageQueueAdapter { this.clientProxy = new MessageQueueProxy(); } - @SkipCLI() async init(): Promise { logger.info("Initializing message-queue service implementation with urls %o", this.urls); await this.manager.createClient(this.urls); diff --git a/twake/backend/node/src/core/platform/services/message-queue/factory.ts b/twake/backend/node/src/core/platform/services/message-queue/factory.ts index fbf39f9a11..5f87fa057e 100644 --- a/twake/backend/node/src/core/platform/services/message-queue/factory.ts +++ b/twake/backend/node/src/core/platform/services/message-queue/factory.ts @@ -17,7 +17,7 @@ export class MessageQueueAdapterFactory { logger.info("Building Adapter %o", type); switch (type) { - case "local": + case "local" || process.env.NODE_ENV === "cli": return new LocalMessageQueueService(); case "amqp": let urls: string[] = configuration.get("amqp.urls", [DEFAULT_AMQP_URL]); diff --git a/twake/backend/node/src/core/platform/services/message-queue/index.ts b/twake/backend/node/src/core/platform/services/message-queue/index.ts index cb5393e31b..d32c60e2cb 100644 --- a/twake/backend/node/src/core/platform/services/message-queue/index.ts +++ b/twake/backend/node/src/core/platform/services/message-queue/index.ts @@ -9,7 +9,6 @@ import { import { eventBus } from "./bus"; import { Processor } from "./processor"; import adapterFactory from "./factory"; -import { SkipCLI } from "../../framework/decorators/skip"; import config from "../../../../core/config"; const logger = rootLogger.child({ @@ -61,7 +60,6 @@ export class MessageQueueService implements MessageQueueServiceAPI { this.processor = new Processor(this); } - @SkipCLI() async init(): Promise { logger.info("Initializing message-queue adapter %o", this.adapter.type); await this.adapter?.init?.(); @@ -69,7 +67,6 @@ export class MessageQueueService implements MessageQueueServiceAPI { return this; } - @SkipCLI() async start(): Promise { logger.info("Starting message-queue adapter %o", this.adapter.type); await this.adapter?.start?.(); @@ -78,7 +75,6 @@ export class MessageQueueService implements MessageQueueServiceAPI { return this; } - @SkipCLI() async stop(): Promise { logger.info("Stopping message-queue adapter %o", this.adapter.type); await this.adapter?.stop?.(); diff --git a/twake/backend/node/src/services/files/services/preview.ts b/twake/backend/node/src/services/files/services/preview.ts index ec808eae1c..39d4ca6f6d 100644 --- a/twake/backend/node/src/services/files/services/preview.ts +++ b/twake/backend/node/src/services/files/services/preview.ts @@ -30,7 +30,7 @@ export class PreviewFinishedProcessor name = "FilePreviewProcessor"; validate(message: PreviewMessageQueueCallback): boolean { - return !!(message && message.document && message.thumbnails); + return !!(message && message.document); } async process(message: PreviewMessageQueueCallback, context?: ExecutionContext): Promise { @@ -46,7 +46,7 @@ export class PreviewFinishedProcessor return; } - entity.thumbnails = message.thumbnails.map((thumb, index) => { + entity.thumbnails = (message.thumbnails || []).map((thumb, index) => { return { index, id: thumb.path.split("/").pop(),