From e3398e196890a942feef7330c0610fa5d5fcbe98 Mon Sep 17 00:00:00 2001 From: Morten Olsen Date: Tue, 4 Nov 2025 13:17:44 +0100 Subject: [PATCH] fix: use view recreate --- packages/server/src/services/views/views.ts | 27 ++++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/packages/server/src/services/views/views.ts b/packages/server/src/services/views/views.ts index 56ee751..56b0104 100644 --- a/packages/server/src/services/views/views.ts +++ b/packages/server/src/services/views/views.ts @@ -75,19 +75,22 @@ class ViewsService { const dbService = this.#services.get(DatabaseService); const db = await dbService.getInstance(); const subquery = db.raw(query); - await db.schema.createViewOrReplace(name, (view) => { - // view.columns(columns); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - view.as(subquery as any); + await db.transaction(async (trx) => { + await trx.schema.dropViewIfExists(name); + await trx.schema.createViewOrReplace(name, (view) => { + // view.columns(columns); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + view.as(subquery as any); + }); + if (description) { + const sql = trx.raw(`COMMENT ON VIEW ?? IS ?;`, [name, description]); + await trx.raw(sql.toQuery()); + } + for (const [columnName, info] of Object.entries(columns)) { + const sql = trx.raw(`COMMENT ON COLUMN ??.?? IS ?;`, [name, columnName, info.description || null]); + await trx.raw(sql.toQuery()); + } }); - if (description) { - const sql = db.raw(`COMMENT ON VIEW ?? IS ?;`, [name, description]); - await db.raw(sql.toQuery()); - } - for (const [columnName, info] of Object.entries(columns)) { - const sql = db.raw(`COMMENT ON COLUMN ??.?? IS ?;`, [name, columnName, info.description || null]); - await db.raw(sql.toQuery()); - } }; public remove = async (name: string) => {