feat: improve performance for GET /api/album & /api/album/:id (#17124)

* fix(server) optimize number of sql calls for GET /api/albums

remove unnecessary join for getMetadataForIds
remove separate call to getLastUpdatedAssetForAlbumId

* fix(server) remove unnecessary getLastUpdatedAssetForAlbumId call for GET /api/album/:id

also remove getLastUpdatedAssetForAlbumId query as it is no longer referenced

* fix(server): correct lastModifiedAssetTimestamp return type + formatting and typing

* chore(server): address type issue with tests found via npm:check

tests & lint still pass before this commit.
This commit is contained in:
PathToLife 2025-04-01 00:28:41 +13:00 committed by GitHub
parent 238c151ac3
commit 09f4476f97
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 71 additions and 51 deletions

View file

@ -201,19 +201,23 @@ order by
-- AlbumRepository.getMetadataForIds
select
"albums"."id" as "albumId",
min("assets"."localDateTime") as "startDate",
max("assets"."localDateTime") as "endDate",
"album_assets"."albumsId" as "albumId",
min(
("assets"."localDateTime" AT TIME ZONE 'UTC'::text)::date
) as "startDate",
max(
("assets"."localDateTime" AT TIME ZONE 'UTC'::text)::date
) as "endDate",
max("assets"."updatedAt") as "lastModifiedAssetTimestamp",
count("assets"."id")::int as "assetCount"
from
"albums"
inner join "albums_assets_assets" as "album_assets" on "album_assets"."albumsId" = "albums"."id"
inner join "assets" on "assets"."id" = "album_assets"."assetsId"
"assets"
inner join "albums_assets_assets" as "album_assets" on "album_assets"."assetsId" = "assets"."id"
where
"albums"."id" in ($1)
"album_assets"."albumsId" in ($1)
and "assets"."deletedAt" is null
group by
"albums"."id"
"album_assets"."albumsId"
-- AlbumRepository.getOwned
select