diff --git a/apps/api/release/app.js b/apps/api/release/app.js index 079d4bb..6789d8a 100644 --- a/apps/api/release/app.js +++ b/apps/api/release/app.js @@ -93025,6 +93025,9 @@ var require_migrate = __commonJS({ statements.push(current.trim()); return statements; } + var LEGACY_NAME_ALIASES = { + "20260910113720_first": "0001_init.sql" + }; function discoverMigrationFiles(dir) { const entries = (0, fs_1.readdirSync)(dir); const files = []; @@ -93060,7 +93063,8 @@ var require_migrate = __commonJS({ const appliedNames = new Set(alreadyApplied.map((row) => row.name)); const applied = []; for (const file2 of files) { - if (appliedNames.has(file2.name)) + const legacyName = LEGACY_NAME_ALIASES[file2.name]; + if (appliedNames.has(file2.name) || legacyName && appliedNames.has(legacyName)) continue; const statements = splitSqlStatements((0, fs_1.readFileSync)(file2.path, "utf8")); await prisma.$transaction( diff --git a/apps/api/src/prisma/migrate.ts b/apps/api/src/prisma/migrate.ts index 7e0429d..ff521bc 100644 --- a/apps/api/src/prisma/migrate.ts +++ b/apps/api/src/prisma/migrate.ts @@ -118,6 +118,17 @@ export function splitSqlStatements(sql: string): string[] { */ type MigrationFile = { name: string; path: string }; +/** + * Databases migrated before the folder-discovery fix recorded the baseline + * under the name of the hand-added flat duplicate that used to sit alongside + * it (prisma/migrations/0001_init.sql, identical SQL bar a trailing newline). + * Without this, upgrading replays the baseline against a database that already + * has it and dies on `type "AdminRole" already exists`. + */ +const LEGACY_NAME_ALIASES: Record = { + '20260910113720_first': '0001_init.sql', +}; + function discoverMigrationFiles(dir: string): MigrationFile[] { const entries = readdirSync(dir); const files: MigrationFile[] = []; @@ -171,7 +182,8 @@ export async function runMigrations(prisma: PrismaClient): Promise