diff --git a/server/src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts b/server/src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts index ffad855964..93600f34d5 100644 --- a/server/src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts +++ b/server/src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts @@ -1,15 +1,21 @@ import { Kysely, sql } from 'kysely'; -export async function up(db: Kysely): Promise { - const { rows } = await sql<{ db: string }>`SELECT current_database() as db;`.execute(db); - const databaseName = rows[0].db; - await sql.raw(`ALTER DATABASE "${databaseName}" RESET vchordrq.prewarm_dim;`).execute(db); +export async function up(qb: Kysely): Promise { + type Conf = { db: string; guc: string[] }; + const res = await sql`select current_database() db, to_json(setconfig) guc from pg_db_role_setting`.execute(qb); + if (res.rows.length === 0) { + return; + } + + await sql`alter database immich reset all;`.execute(qb); + const { db, guc } = res.rows[0]; + for (const parameter of guc) { + const [key, value] = parameter.split('='); + if (key === 'vchordrq.prewarm_dim') { + continue; + } + await sql.raw(`alter database "${db}" set ${key} to ${value};`).execute(qb); + } } -export async function down(db: Kysely): Promise { - const { rows } = await sql<{ db: string }>`SELECT current_database() as db;`.execute(db); - const databaseName = rows[0].db; - await sql - .raw(`ALTER DATABASE "${databaseName}" SET vchordrq.prewarm_dim = '512,640,768,1024,1152,1536';`) - .execute(db); -} +export async function down(): Promise {}