diff --git a/server/src/schema/functions.ts b/server/src/schema/functions.ts index 8988bf38d2..44dba65a59 100644 --- a/server/src/schema/functions.ts +++ b/server/src/schema/functions.ts @@ -263,8 +263,9 @@ export const asset_edit_insert = registerFunction({ body: ` BEGIN UPDATE asset - SET "editCount" = "editCount" + 1 - WHERE "id" = NEW."assetId"; + SET "isEdited" = true + FROM NEW + WHERE asset.id = NEW."assetId" AND NOT "isEdited"; RETURN NULL; END `, @@ -277,8 +278,10 @@ export const asset_edit_delete = registerFunction({ body: ` BEGIN UPDATE asset - SET "editCount" = "editCount" - 1 - WHERE "id" = OLD."assetId"; + SET "isEdited" = false + FROM OLD + WHERE asset.id = OLD."assetId" AND "isEdited" + AND NOT EXISTS (SELECT FROM asset_edit edit WHERE edit.asset_id = asset.id); RETURN NULL; END `, diff --git a/server/src/schema/tables/asset-edit.table.ts b/server/src/schema/tables/asset-edit.table.ts index 4c4bf45cf2..487f832f97 100644 --- a/server/src/schema/tables/asset-edit.table.ts +++ b/server/src/schema/tables/asset-edit.table.ts @@ -12,9 +12,9 @@ import { } from 'src/sql-tools'; @Table('asset_edit') -@AfterInsertTrigger({ scope: 'row', function: asset_edit_insert }) +@AfterInsertTrigger({ scope: 'statement', function: asset_edit_insert }) @AfterDeleteTrigger({ - scope: 'row', + scope: 'statement', function: asset_edit_delete, referencingOldTableAs: 'old', when: 'pg_trigger_depth() = 0',