diff --git a/e2e/src/api/specs/album.e2e-spec.ts b/e2e/src/api/specs/album.e2e-spec.ts index 5b40234e8d..1d142ac468 100644 --- a/e2e/src/api/specs/album.e2e-spec.ts +++ b/e2e/src/api/specs/album.e2e-spec.ts @@ -362,6 +362,26 @@ describe('/albums', () => { shared: true, }); }); + + it('should not count trashed assets', async () => { + await utils.deleteAssets(user1.accessToken, [user1Asset2.id]); + + const { status, body } = await request(app) + .get(`/albums/${user2Albums[0].id}?withoutAssets=true`) + .set('Authorization', `Bearer ${user1.accessToken}`); + + expect(status).toBe(200); + expect(body).toEqual({ + ...user2Albums[0], + assets: [], + assetCount: 1, + lastModifiedAssetTimestamp: expect.any(String), + endDate: expect.any(String), + startDate: expect.any(String), + albumUsers: expect.any(Array), + shared: true, + }); + }); }); describe('GET /albums/statistics', () => { diff --git a/server/src/queries/album.repository.sql b/server/src/queries/album.repository.sql index 48dc4dda4e..b982ea2cff 100644 --- a/server/src/queries/album.repository.sql +++ b/server/src/queries/album.repository.sql @@ -210,6 +210,7 @@ from left join "assets" on "assets"."id" = "album_assets"."assetsId" where "albums"."id" in ($1) + and "assets"."deletedAt" is null group by "albums"."id" diff --git a/server/src/repositories/album.repository.ts b/server/src/repositories/album.repository.ts index d3b696169b..c6e01b532e 100644 --- a/server/src/repositories/album.repository.ts +++ b/server/src/repositories/album.repository.ts @@ -126,6 +126,7 @@ export class AlbumRepository implements IAlbumRepository { .select((eb) => eb.fn.max('assets.fileCreatedAt').as('endDate')) .select((eb) => eb.fn.count('assets.id').as('assetCount')) .where('albums.id', 'in', ids) + .where('assets.deletedAt', 'is', null) .groupBy('albums.id') .execute();