diff --git a/server/src/queries/asset.edit.repository.sql b/server/src/queries/asset.edit.repository.sql index 0cf62882db..f09de5dac6 100644 --- a/server/src/queries/asset.edit.repository.sql +++ b/server/src/queries/asset.edit.repository.sql @@ -17,3 +17,17 @@ where "assetId" = $1 order by "sequence" asc + +-- AssetEditRepository.getWithSyncInfo +select + "id", + "assetId", + "sequence", + "action", + "parameters" +from + "asset_edit" +where + "assetId" = $1 +order by + "sequence" asc diff --git a/server/src/queries/sync.repository.sql b/server/src/queries/sync.repository.sql index f817ad57b3..19616e9400 100644 --- a/server/src/queries/sync.repository.sql +++ b/server/src/queries/sync.repository.sql @@ -514,6 +514,38 @@ where order by "asset_exif"."updateId" asc +-- SyncRepository.assetEdit.getDeletes +select + "asset_edit_audit"."id", + "assetId" +from + "asset_edit_audit" as "asset_edit_audit" + left join "asset" on "asset"."id" = "asset_edit_audit"."assetId" +where + "asset_edit_audit"."id" < $1 + and "asset_edit_audit"."id" > $2 + and "asset"."ownerId" = $3 +order by + "asset_edit_audit"."id" asc + +-- SyncRepository.assetEdit.getUpserts +select + "asset_edit"."id", + "assetId", + "action", + "parameters", + "sequence", + "asset_edit"."updateId" +from + "asset_edit" as "asset_edit" + inner join "asset" on "asset"."id" = "asset_edit"."assetId" +where + "asset_edit"."updateId" < $1 + and "asset_edit"."updateId" > $2 + and "asset"."ownerId" = $3 +order by + "asset_edit"."updateId" asc + -- SyncRepository.assetFace.getDeletes select "asset_face_audit"."id", diff --git a/server/src/repositories/asset-edit.repository.ts b/server/src/repositories/asset-edit.repository.ts index 791a3dfa5d..96019d0085 100644 --- a/server/src/repositories/asset-edit.repository.ts +++ b/server/src/repositories/asset-edit.repository.ts @@ -9,9 +9,7 @@ import { DB } from 'src/schema'; export class AssetEditRepository { constructor(@InjectKysely() private db: Kysely) {} - @GenerateSql({ - params: [DummyValue.UUID], - }) + @GenerateSql({ params: [DummyValue.UUID] }) replaceAll(assetId: string, edits: AssetEditActionItem[]): Promise { return this.db.transaction().execute(async (trx) => { await trx.deleteFrom('asset_edit').where('assetId', '=', assetId).execute(); @@ -28,9 +26,7 @@ export class AssetEditRepository { }); } - @GenerateSql({ - params: [DummyValue.UUID], - }) + @GenerateSql({ params: [DummyValue.UUID] }) getAll(assetId: string): Promise { return this.db .selectFrom('asset_edit') @@ -40,9 +36,7 @@ export class AssetEditRepository { .execute() as Promise; } - @GenerateSql({ - params: [DummyValue.UUID], - }) + @GenerateSql({ params: [DummyValue.UUID] }) getWithSyncInfo(assetId: string) { return this.db .selectFrom('asset_edit') diff --git a/server/src/repositories/sync.repository.ts b/server/src/repositories/sync.repository.ts index af5f575e10..f860aea799 100644 --- a/server/src/repositories/sync.repository.ts +++ b/server/src/repositories/sync.repository.ts @@ -502,7 +502,7 @@ class AssetExifSync extends BaseSync { } class AssetEditSync extends BaseSync { - @GenerateSql({ params: [dummyQueryOptions, DummyValue.UUID], stream: true }) + @GenerateSql({ params: [dummyQueryOptions], stream: true }) getDeletes(options: SyncQueryOptions) { return this.auditQuery('asset_edit_audit', options) .select(['asset_edit_audit.id', 'assetId']) @@ -515,7 +515,7 @@ class AssetEditSync extends BaseSync { return this.auditCleanup('asset_edit_audit', daysAgo); } - @GenerateSql({ params: [dummyQueryOptions, DummyValue.UUID], stream: true }) + @GenerateSql({ params: [dummyQueryOptions], stream: true }) getUpserts(options: SyncQueryOptions) { return this.upsertQuery('asset_edit', options) .select(['asset_edit.id', 'assetId', 'action', 'parameters', 'sequence', 'asset_edit.updateId']) diff --git a/server/test/factories/asset-edit.factory.ts b/server/test/factories/asset-edit.factory.ts index e16b0c2e4b..dec9ebde93 100644 --- a/server/test/factories/asset-edit.factory.ts +++ b/server/test/factories/asset-edit.factory.ts @@ -15,6 +15,7 @@ export class AssetEditFactory { static from(dto: AssetEditLike = {}) { const id = dto.id ?? newUuid(); + const updateId = dto.updateId ?? newUuid(); return new AssetEditFactory({ id, @@ -22,6 +23,7 @@ export class AssetEditFactory { action: AssetEditAction.Crop, parameters: { x: 5, y: 6, width: 200, height: 100 }, sequence: 1, + updateId, ...dto, }); }