diff --git a/server/src/queries/asset.repository.sql b/server/src/queries/asset.repository.sql index 67f9f39c84..948f7dd114 100644 --- a/server/src/queries/asset.repository.sql +++ b/server/src/queries/asset.repository.sql @@ -306,17 +306,26 @@ order by with "duplicates" as ( select - "duplicateId", - jsonb_agg("assets") as "assets" + "assets"."duplicateId", + jsonb_agg("asset") as "assets" from "assets" + left join lateral ( + select + "assets".*, + "exif" as "exifInfo" + from + "exif" + where + "exif"."assetId" = "assets"."id" + ) as "asset" on true where - "ownerId" = $1::uuid - and "duplicateId" is not null - and "deletedAt" is null - and "isVisible" = $2 + "assets"."ownerId" = $1::uuid + and "assets"."duplicateId" is not null + and "assets"."deletedAt" is null + and "assets"."isVisible" = $2 group by - "duplicateId" + "assets"."duplicateId" ), "unique" as ( select diff --git a/server/src/repositories/asset.repository.ts b/server/src/repositories/asset.repository.ts index 6bb253d183..b39781209e 100644 --- a/server/src/repositories/asset.repository.ts +++ b/server/src/repositories/asset.repository.ts @@ -677,13 +677,23 @@ export class AssetRepository implements IAssetRepository { .with('duplicates', (qb) => qb .selectFrom('assets') - .select('duplicateId') - .select((eb) => eb.fn<Assets[]>('jsonb_agg', [eb.table('assets')]).as('assets')) - .where('ownerId', '=', asUuid(userId)) - .where('duplicateId', 'is not', null) - .where('deletedAt', 'is', null) - .where('isVisible', '=', true) - .groupBy('duplicateId'), + .leftJoinLateral( + (qb) => + qb + .selectFrom('exif') + .selectAll('assets') + .select((eb) => eb.table('exif').as('exifInfo')) + .whereRef('exif.assetId', '=', 'assets.id') + .as('asset'), + (join) => join.onTrue(), + ) + .select('assets.duplicateId') + .select((eb) => eb.fn('jsonb_agg', [eb.table('asset')]).as('assets')) + .where('assets.ownerId', '=', asUuid(userId)) + .where('assets.duplicateId', 'is not', null) + .where('assets.deletedAt', 'is', null) + .where('assets.isVisible', '=', true) + .groupBy('assets.duplicateId'), ) .with('unique', (qb) => qb