From 0bb1219b5fc7ed26663fc866c42becd1034ca09c Mon Sep 17 00:00:00 2001 From: Lukas Date: Tue, 4 Feb 2025 04:07:50 -0500 Subject: [PATCH] fix(server): for individual shares not showing thumbnails (#15895) * Fix for individual shares not showing thumbnails * synced sql * chore: add e2e test --------- Co-authored-by: Jason Rasmussen --- e2e/src/api/specs/shared-link.e2e-spec.ts | 7 +++++-- server/src/queries/shared.link.repository.sql | 3 ++- server/src/repositories/shared-link.repository.ts | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/e2e/src/api/specs/shared-link.e2e-spec.ts b/e2e/src/api/specs/shared-link.e2e-spec.ts index 45c906578d..5da6765d20 100644 --- a/e2e/src/api/specs/shared-link.e2e-spec.ts +++ b/e2e/src/api/specs/shared-link.e2e-spec.ts @@ -89,7 +89,7 @@ describe('/shared-links', () => { await deleteUserAdmin({ id: user2.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) }); }); - describe('GET /share/${key}', () => { + describe('GET /share/:key', () => { it('should have correct asset count in meta tag for non-empty album', async () => { const resp = await request(shareUrl).get(`/${linkWithMetadata.key}`); expect(resp.status).toBe(200); @@ -139,7 +139,10 @@ describe('/shared-links', () => { expect(body).toEqual( expect.arrayContaining([ expect.objectContaining({ id: linkWithAlbum.id }), - expect.objectContaining({ id: linkWithAssets.id }), + expect.objectContaining({ + id: linkWithAssets.id, + assets: expect.arrayContaining([expect.objectContaining({ id: asset1.id })]), + }), expect.objectContaining({ id: linkWithPassword.id }), expect.objectContaining({ id: linkWithMetadata.id }), expect.objectContaining({ id: linkWithoutMetadata.id }), diff --git a/server/src/queries/shared.link.repository.sql b/server/src/queries/shared.link.repository.sql index 1861ed86e4..e1f6af3383 100644 --- a/server/src/queries/shared.link.repository.sql +++ b/server/src/queries/shared.link.repository.sql @@ -100,13 +100,14 @@ order by -- SharedLinkRepository.getAll select distinct on ("shared_links"."createdAt") "shared_links".*, + to_json("assets") as "assets", to_json("album") as "album" from "shared_links" left join "shared_link__asset" on "shared_link__asset"."sharedLinksId" = "shared_links"."id" left join lateral ( select - "assets".* + json_agg("assets") as "assets" from "assets" where diff --git a/server/src/repositories/shared-link.repository.ts b/server/src/repositories/shared-link.repository.ts index 6473100387..3ffae4f067 100644 --- a/server/src/repositories/shared-link.repository.ts +++ b/server/src/repositories/shared-link.repository.ts @@ -103,12 +103,13 @@ export class SharedLinkRepository implements ISharedLinkRepository { (eb) => eb .selectFrom('assets') + .select((eb) => eb.fn.jsonAgg('assets').as('assets')) .whereRef('assets.id', '=', 'shared_link__asset.assetsId') .where('assets.deletedAt', 'is', null) - .selectAll('assets') .as('assets'), (join) => join.onTrue(), ) + .select((eb) => eb.fn.toJson('assets').as('assets')) .leftJoinLateral( (eb) => eb