diff --git a/server/src/queries/asset.job.repository.sql b/server/src/queries/asset.job.repository.sql index 554aa3b195ea8..333d4ace81e77 100644 --- a/server/src/queries/asset.job.repository.sql +++ b/server/src/queries/asset.job.repository.sql @@ -437,12 +437,13 @@ select "asset_file" where "asset_file"."assetId" = "asset"."id" - and "asset_file"."type" = $1 + and "asset_file"."type" = 'preview' + and "asset_file"."isEdited" = false ) as "previewFile" from "asset" where - "asset"."id" = $2 + "asset"."id" = $1 -- AssetJobRepository.getForSyncAssets select diff --git a/server/src/queries/asset.repository.sql b/server/src/queries/asset.repository.sql index a2525c3b17062..a68fde2b93661 100644 --- a/server/src/queries/asset.repository.sql +++ b/server/src/queries/asset.repository.sql @@ -637,13 +637,14 @@ select "asset_file" where "asset_file"."assetId" = "asset"."id" - and "asset_file"."type" = $1 + and "asset_file"."type" = 'encoded_video' + and "asset_file"."isEdited" = false ) as "encodedVideoPath" from "asset" where - "asset"."id" = $2 - and "asset"."type" = $3 + "asset"."id" = $1 + and "asset"."type" = $2 -- AssetRepository.getForOcr select diff --git a/server/src/queries/person.repository.sql b/server/src/queries/person.repository.sql index 964aaaccee3e8..c76e42d50b240 100644 --- a/server/src/queries/person.repository.sql +++ b/server/src/queries/person.repository.sql @@ -176,7 +176,7 @@ select where "asset_file"."assetId" = "asset"."id" and "asset_file"."type" = 'preview' - and "asset_file"."isEdited" = $1 + and "asset_file"."isEdited" = false ) as "previewPath" from "person" @@ -184,7 +184,7 @@ from inner join "asset" on "asset_face"."assetId" = "asset"."id" left join "asset_exif" on "asset_exif"."assetId" = "asset"."id" where - "person"."id" = $2 + "person"."id" = $1 and "asset_face"."deletedAt" is null -- PersonRepository.reassignFace diff --git a/server/src/repositories/person.repository.ts b/server/src/repositories/person.repository.ts index 00156a2492832..5c193b431dbae 100644 --- a/server/src/repositories/person.repository.ts +++ b/server/src/repositories/person.repository.ts @@ -9,7 +9,7 @@ import { DB } from 'src/schema'; import { AssetFaceTable } from 'src/schema/tables/asset-face.table'; import { FaceSearchTable } from 'src/schema/tables/face-search.table'; import { PersonTable } from 'src/schema/tables/person.table'; -import { removeUndefinedKeys } from 'src/utils/database'; +import { removeUndefinedKeys, withFilePath } from 'src/utils/database'; import { paginationHelper, PaginationOptions } from 'src/utils/pagination'; export interface PersonSearchOptions { @@ -282,15 +282,7 @@ export class PersonRepository { 'asset.originalPath', 'asset_exif.orientation as exifOrientation', ]) - .select((eb) => - eb - .selectFrom('asset_file') - .select('asset_file.path') - .whereRef('asset_file.assetId', '=', 'asset.id') - .where('asset_file.type', '=', sql.lit(AssetFileType.Preview)) - .where('asset_file.isEdited', '=', false) - .as('previewPath'), - ) + .select((eb) => withFilePath(eb, AssetFileType.Preview).as('previewPath')) .where('person.id', '=', id) .where('asset_face.deletedAt', 'is', null) .executeTakeFirst(); diff --git a/server/src/utils/database.ts b/server/src/utils/database.ts index 03998d9462c8d..d25d99b4913f4 100644 --- a/server/src/utils/database.ts +++ b/server/src/utils/database.ts @@ -126,12 +126,13 @@ export function withFiles(eb: ExpressionBuilder, type?: AssetFileTy ).as('files'); } -export function withFilePath(eb: ExpressionBuilder, type: AssetFileType) { +export function withFilePath(eb: ExpressionBuilder, type: AssetFileType, isEdited = false) { return eb .selectFrom('asset_file') .select('asset_file.path') .whereRef('asset_file.assetId', '=', 'asset.id') - .where('asset_file.type', '=', type); + .where('asset_file.type', '=', sql.lit(type)) + .where('asset_file.isEdited', '=', sql.lit(isEdited)); } export function withFacesAndPeople( diff --git a/server/test/medium/specs/repositories/asset-job.repository.spec.ts b/server/test/medium/specs/repositories/asset-job.repository.spec.ts index 6af3aa778f425..023ed8774eca1 100644 --- a/server/test/medium/specs/repositories/asset-job.repository.spec.ts +++ b/server/test/medium/specs/repositories/asset-job.repository.spec.ts @@ -115,4 +115,33 @@ describe(AssetJobRepository.name, () => { ); }); }); + + describe('getForOcr', () => { + it('should not return the edited preview file', async () => { + const { ctx, sut } = setup(); + const { user } = await ctx.newUser(); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + + await ctx.newAssetFile({ + assetId: asset.id, + type: AssetFileType.Preview, + path: 'preview_edited.jpg', + isEdited: true, + }); + await ctx.newAssetFile({ + assetId: asset.id, + type: AssetFileType.Preview, + path: 'preview_unedited.jpg', + isEdited: false, + }); + + const result = await sut.getForOcr(asset.id); + + expect(result).toEqual( + expect.objectContaining({ + previewFile: 'preview_unedited.jpg', + }), + ); + }); + }); });