From 990282cbe7000107208e69cd759ae1c1a014eb54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Mass=C3=A9?= Date: Fri, 3 Dec 2021 14:33:03 -0500 Subject: [PATCH 1/3] rename file --- .../src/migrations/{0.1.18-status.ts => 0.1.19-status.ts} | 0 packages/server/src/migrations/index.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/server/src/migrations/{0.1.18-status.ts => 0.1.19-status.ts} (100%) diff --git a/packages/server/src/migrations/0.1.18-status.ts b/packages/server/src/migrations/0.1.19-status.ts similarity index 100% rename from packages/server/src/migrations/0.1.18-status.ts rename to packages/server/src/migrations/0.1.19-status.ts diff --git a/packages/server/src/migrations/index.ts b/packages/server/src/migrations/index.ts index 2e16f563d..08df2d79a 100644 --- a/packages/server/src/migrations/index.ts +++ b/packages/server/src/migrations/index.ts @@ -1,4 +1,4 @@ import { Migration } from '@botpress/messaging-engine' -import { StatusMigration } from './0.1.18-status' +import { StatusMigration } from './0.1.19-status' export const Migrations: { new (): Migration }[] = [StatusMigration] From 3665b149badf49fe0002c4c20c7d0f1ac5f3d7df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Mass=C3=A9?= Date: Fri, 3 Dec 2021 15:02:07 -0500 Subject: [PATCH 2/3] validate src and dst --- packages/engine/src/migration/service.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/engine/src/migration/service.ts b/packages/engine/src/migration/service.ts index 055c47dc4..d16fc1fac 100644 --- a/packages/engine/src/migration/service.ts +++ b/packages/engine/src/migration/service.ts @@ -45,6 +45,8 @@ export class MigrationService extends Service { } private async migrate() { + this.validateSrcAndDst() + const migrations = this.listMigrationsToRun() if (!migrations.length && !this.isDry && !process.env.MIGRATE_CMD?.length) { return @@ -66,6 +68,24 @@ export class MigrationService extends Service { await this.runMigrations(migrations) } + private validateSrcAndDst() { + if (this.isDown && semver.gt(this.dstVersion, this.srcVersion)) { + this.logger.error( + undefined, + `Invalid migration parameters: down migration cannot target a version (${this.dstVersion}) higher than the current server version (${this.srcVersion})` + ) + throw new ShutDownSignal(1) + } + + if (!this.isDown && semver.lt(this.dstVersion, this.srcVersion)) { + this.logger.error( + undefined, + `Invalid migration parameters: up migration cannot target a version (${this.dstVersion}) lower than the current server version (${this.srcVersion})` + ) + throw new ShutDownSignal(1) + } + } + private async runMigrations(migrations: Migration[]) { this.loggerDry.window([clc.bold(`Executing ${migrations.length} migration${migrations.length > 1 ? 's' : ''}`)]) From 9029abe58f0d08675bf4406733e23740e048d11b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Mass=C3=A9?= Date: Mon, 6 Dec 2021 12:23:39 -0500 Subject: [PATCH 3/3] fix migrating to version above app version --- packages/engine/src/migration/service.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/engine/src/migration/service.ts b/packages/engine/src/migration/service.ts index d16fc1fac..f17d863a9 100644 --- a/packages/engine/src/migration/service.ts +++ b/packages/engine/src/migration/service.ts @@ -84,6 +84,16 @@ export class MigrationService extends Service { ) throw new ShutDownSignal(1) } + + if (semver.gt(this.dstVersion, this.meta.app().version)) { + this.logger.error( + undefined, + `Invalid migration parameters: up migration cannot target a version (${ + this.dstVersion + }) higher than the application version (${this.meta.app().version})` + ) + throw new ShutDownSignal(1) + } } private async runMigrations(migrations: Migration[]) {