diff --git a/apps/meteor/server/startup/migrations/index.ts b/apps/meteor/server/startup/migrations/index.ts index 784d3019433..a3151a28744 100644 --- a/apps/meteor/server/startup/migrations/index.ts +++ b/apps/meteor/server/startup/migrations/index.ts @@ -27,4 +27,5 @@ import './v290'; import './v291'; import './v292'; import './v293'; +import './v294'; import './xrun'; diff --git a/apps/meteor/server/startup/migrations/v294.ts b/apps/meteor/server/startup/migrations/v294.ts new file mode 100644 index 00000000000..e4982436d81 --- /dev/null +++ b/apps/meteor/server/startup/migrations/v294.ts @@ -0,0 +1,35 @@ +import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import type { AppSignatureManager } from '@rocket.chat/apps-engine/server/managers/AppSignatureManager'; + +import { Apps } from '../../../ee/server/apps'; +import type { AppRealStorage } from '../../../ee/server/apps/storage'; +import { addMigration } from '../../lib/migrations'; + +addMigration({ + version: 294, + async up() { + Apps.initialize(); + + const sigMan = Apps.getManager()?.getSignatureManager() as AppSignatureManager; + const appsStorage = Apps.getStorage() as AppRealStorage; + + const apps = await appsStorage.retrieveAll(); + + for await (const app of apps.values()) { + if (app.installationSource && app.signature) { + continue; + } + + const updatedApp = { + ...app, + migrated: true, + installationSource: 'marketplaceInfo' in app ? 'marketplace' : 'private', + } as IAppStorageItem; + + await appsStorage.update({ + ...updatedApp, + signature: await sigMan.signApp(updatedApp), + }); + } + }, +});