From c41f5567c5e7c5bb38b17ad45ff9347baf0393f2 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Fri, 10 Jul 2026 15:11:29 +0330 Subject: [PATCH] migration --- src/database/data-source.ts | 1 + src/database/migrations/1722000000000-AddDepositScenarios.ts | 2 ++ src/database/typeorm-options.ts | 3 +++ 3 files changed, 6 insertions(+) diff --git a/src/database/data-source.ts b/src/database/data-source.ts index 9b6be4a..208e5f4 100644 --- a/src/database/data-source.ts +++ b/src/database/data-source.ts @@ -13,5 +13,6 @@ export default new DataSource({ database: process.env.DB_NAME, entities: [join(__dirname, '../**/*.entity.{js,ts}')], migrations: [join(__dirname, '/migrations/*.{js,ts}')], + migrationsTransactionMode: 'each', ...(isCompiled ? {} : { requireTsNode: true }), }); diff --git a/src/database/migrations/1722000000000-AddDepositScenarios.ts b/src/database/migrations/1722000000000-AddDepositScenarios.ts index 2a1741e..259880d 100644 --- a/src/database/migrations/1722000000000-AddDepositScenarios.ts +++ b/src/database/migrations/1722000000000-AddDepositScenarios.ts @@ -15,9 +15,11 @@ const NEW_NOTIFICATION_KEYS = [NotificationScenarioKey.DEPOSIT_RECEIPT_SUBMITTED * Only adds the new enum values. Postgres forbids using a newly added enum * value in the same transaction it was created in, so seeding the actual * scenario rows is handled by the follow-up `SeedDepositScenarios` migration. + * `transaction = false` commits ADD VALUE immediately (required by Postgres). */ export class AddDepositScenarios1722000000000 implements MigrationInterface { name = 'AddDepositScenarios1722000000000'; + transaction = false; public async up(queryRunner: QueryRunner): Promise { for (const key of NEW_SMS_KEYS) { diff --git a/src/database/typeorm-options.ts b/src/database/typeorm-options.ts index ba00d5a..85bf472 100644 --- a/src/database/typeorm-options.ts +++ b/src/database/typeorm-options.ts @@ -15,5 +15,8 @@ export function getTypeOrmOptions(): TypeOrmModuleOptions { // by both reserves and reserve_status_history). Use migrations instead. synchronize: false, migrationsRun: true, + // Each migration commits separately so Postgres enum ADD VALUE can be + // used by a follow-up seed migration (unsafe in the same transaction). + migrationsTransactionMode: 'each', }; }