diff --git a/server/src/repositories/ocr.repository.ts b/server/src/repositories/ocr.repository.ts index 4ee7f59feb..b33a5773dc 100644 --- a/server/src/repositories/ocr.repository.ts +++ b/server/src/repositories/ocr.repository.ts @@ -78,31 +78,34 @@ export class OcrRepository { visible: AssetOcrResponseDto[], hidden: AssetOcrResponseDto[], ): Promise { - if (visible.length > 0) { - await this.db - .updateTable('asset_ocr') - .set({ isVisible: true }) - .where( - 'asset_ocr.id', - 'in', - visible.map((i) => i.id), - ) - .execute(); - } - - if (hidden.length > 0) { - await this.db - .updateTable('asset_ocr') - .set({ isVisible: false }) - .where( - 'asset_ocr.id', - 'in', - hidden.map((i) => i.id), - ) - .execute(); - } - const searchText = visible.map((item) => item.text.trim()).join(' '); - await this.db.updateTable('ocr_search').set({ text: searchText }).where('assetId', '=', assetId).execute(); + + await this.db.transaction().execute(async (trx) => { + if (visible.length > 0) { + await trx + .updateTable('asset_ocr') + .set({ isVisible: true }) + .where( + 'asset_ocr.id', + 'in', + visible.map((i) => i.id), + ) + .execute(); + } + + if (hidden.length > 0) { + await trx + .updateTable('asset_ocr') + .set({ isVisible: false }) + .where( + 'asset_ocr.id', + 'in', + hidden.map((i) => i.id), + ) + .execute(); + } + + await trx.updateTable('ocr_search').set({ text: searchText }).where('assetId', '=', assetId).execute(); + }); } } diff --git a/server/src/repositories/person.repository.ts b/server/src/repositories/person.repository.ts index 8d5faa61dc..89210c43c4 100644 --- a/server/src/repositories/person.repository.ts +++ b/server/src/repositories/person.repository.ts @@ -554,28 +554,30 @@ export class PersonRepository { return; } - if (visible.length > 0) { - await this.db - .updateTable('asset_face') - .set({ isVisible: true }) - .where( - 'asset_face.id', - 'in', - visible.map(({ id }) => id), - ) - .execute(); - } + await this.db.transaction().execute(async (trx) => { + if (visible.length > 0) { + await trx + .updateTable('asset_face') + .set({ isVisible: true }) + .where( + 'asset_face.id', + 'in', + visible.map(({ id }) => id), + ) + .execute(); + } - if (hidden.length > 0) { - await this.db - .updateTable('asset_face') - .set({ isVisible: false }) - .where( - 'asset_face.id', - 'in', - hidden.map(({ id }) => id), - ) - .execute(); - } + if (hidden.length > 0) { + await trx + .updateTable('asset_face') + .set({ isVisible: false }) + .where( + 'asset_face.id', + 'in', + hidden.map(({ id }) => id), + ) + .execute(); + } + }); } }