mirror of
https://github.com/immich-app/immich.git
synced 2026-04-24 01:59:42 -04:00
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com> Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
566 lines
12 KiB
SQL
566 lines
12 KiB
SQL
-- NOTE: This file is auto generated by ./sql-generator
|
|
|
|
-- AlbumRepository.getById
|
|
with
|
|
"album_user" as (
|
|
select
|
|
*
|
|
from
|
|
"album_user"
|
|
where
|
|
"album_user"."albumId" = $1
|
|
)
|
|
select
|
|
"album".*,
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"album_user"."role",
|
|
(
|
|
select
|
|
to_json(obj)
|
|
from
|
|
(
|
|
select
|
|
"id",
|
|
"name",
|
|
"email",
|
|
"avatarColor",
|
|
"profileImagePath",
|
|
"profileChangedAt"
|
|
from
|
|
(
|
|
select
|
|
1
|
|
) as "dummy"
|
|
) as obj
|
|
) as "user"
|
|
from
|
|
"album_user"
|
|
inner join "user" on "user"."id" = "album_user"."userId"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
order by
|
|
"album_user"."role",
|
|
"album_user"."userId" = $2 desc,
|
|
"user"."name" asc
|
|
) as agg
|
|
) as "albumUsers",
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"shared_link".*
|
|
from
|
|
"shared_link"
|
|
where
|
|
"shared_link"."albumId" = "album"."id"
|
|
) as agg
|
|
) as "sharedLinks",
|
|
(
|
|
select
|
|
json_agg("asset") as "assets"
|
|
from
|
|
(
|
|
select
|
|
"asset".*,
|
|
"asset_exif" as "exifInfo"
|
|
from
|
|
"asset"
|
|
left join "asset_exif" on "asset"."id" = "asset_exif"."assetId"
|
|
inner join "album_asset" on "album_asset"."assetId" = "asset"."id"
|
|
where
|
|
"album_asset"."albumId" = "album"."id"
|
|
and "asset"."deletedAt" is null
|
|
and "asset"."visibility" in ('archive', 'timeline')
|
|
order by
|
|
"asset"."fileCreatedAt" desc
|
|
) as "asset"
|
|
) as "assets"
|
|
from
|
|
"album"
|
|
where
|
|
"album"."id" = $3
|
|
and "album"."deletedAt" is null
|
|
|
|
-- AlbumRepository.getByAssetId
|
|
select
|
|
"album".*,
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"album_user"."role",
|
|
(
|
|
select
|
|
to_json(obj)
|
|
from
|
|
(
|
|
select
|
|
"id",
|
|
"name",
|
|
"email",
|
|
"avatarColor",
|
|
"profileImagePath",
|
|
"profileChangedAt"
|
|
from
|
|
(
|
|
select
|
|
1
|
|
) as "dummy"
|
|
) as obj
|
|
) as "user"
|
|
from
|
|
"album_user"
|
|
inner join "user" on "user"."id" = "album_user"."userId"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
order by
|
|
"album_user"."role",
|
|
"album_user"."userId" = $1 desc,
|
|
"user"."name" asc
|
|
) as agg
|
|
) as "albumUsers"
|
|
from
|
|
"album"
|
|
inner join "album_asset" on "album_asset"."albumId" = "album"."id"
|
|
where
|
|
exists (
|
|
select
|
|
from
|
|
"album_user"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
and "album_user"."userId" = $2
|
|
)
|
|
and "album_asset"."assetId" = $3
|
|
and "album"."deletedAt" is null
|
|
order by
|
|
"album"."createdAt" desc
|
|
|
|
-- AlbumRepository.getByAssetIds
|
|
select
|
|
"album"."id",
|
|
"album_asset"."assetId"
|
|
from
|
|
"album"
|
|
inner join "album_asset" on "album_asset"."albumId" = "album"."id"
|
|
where
|
|
exists (
|
|
select
|
|
from
|
|
"album_user"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
and "album_user"."userId" = $1
|
|
)
|
|
and "album_asset"."assetId" in ($2)
|
|
and "album"."deletedAt" is null
|
|
|
|
-- AlbumRepository.getMetadataForIds
|
|
select
|
|
"album_asset"."albumId" as "albumId",
|
|
min(
|
|
("asset"."localDateTime" AT TIME ZONE 'UTC'::text)::date
|
|
) as "startDate",
|
|
max(
|
|
("asset"."localDateTime" AT TIME ZONE 'UTC'::text)::date
|
|
) as "endDate",
|
|
max("asset"."updatedAt") as "lastModifiedAssetTimestamp",
|
|
count("asset"."id")::int as "assetCount"
|
|
from
|
|
"asset"
|
|
inner join "album_asset" on "album_asset"."assetId" = "asset"."id"
|
|
where
|
|
"asset"."visibility" in ('archive', 'timeline')
|
|
and "album_asset"."albumId" in ($1)
|
|
and "asset"."deletedAt" is null
|
|
group by
|
|
"album_asset"."albumId"
|
|
|
|
-- AlbumRepository.getOwned
|
|
select
|
|
"album".*,
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"album_user"."role",
|
|
(
|
|
select
|
|
to_json(obj)
|
|
from
|
|
(
|
|
select
|
|
"id",
|
|
"name",
|
|
"email",
|
|
"avatarColor",
|
|
"profileImagePath",
|
|
"profileChangedAt"
|
|
from
|
|
(
|
|
select
|
|
1
|
|
) as "dummy"
|
|
) as obj
|
|
) as "user"
|
|
from
|
|
"album_user"
|
|
inner join "user" on "user"."id" = "album_user"."userId"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
order by
|
|
"album_user"."role",
|
|
"album_user"."userId" = $1 desc,
|
|
"user"."name" asc
|
|
) as agg
|
|
) as "albumUsers",
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"shared_link".*
|
|
from
|
|
"shared_link"
|
|
where
|
|
"shared_link"."albumId" = "album"."id"
|
|
) as agg
|
|
) as "sharedLinks"
|
|
from
|
|
"album"
|
|
inner join "album_user" on "album_user"."albumId" = "album"."id"
|
|
and "album_user"."userId" = $2
|
|
and "album_user"."role" = 'owner'
|
|
where
|
|
"album"."deletedAt" is null
|
|
order by
|
|
"album"."createdAt" desc
|
|
|
|
-- AlbumRepository.getShared
|
|
select
|
|
"album".*,
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"album_user"."role",
|
|
(
|
|
select
|
|
to_json(obj)
|
|
from
|
|
(
|
|
select
|
|
"id",
|
|
"name",
|
|
"email",
|
|
"avatarColor",
|
|
"profileImagePath",
|
|
"profileChangedAt"
|
|
from
|
|
(
|
|
select
|
|
1
|
|
) as "dummy"
|
|
) as obj
|
|
) as "user"
|
|
from
|
|
"album_user"
|
|
inner join "user" on "user"."id" = "album_user"."userId"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
order by
|
|
"album_user"."role",
|
|
"album_user"."userId" = $1 desc,
|
|
"user"."name" asc
|
|
) as agg
|
|
) as "albumUsers",
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"shared_link".*
|
|
from
|
|
"shared_link"
|
|
where
|
|
"shared_link"."albumId" = "album"."id"
|
|
) as agg
|
|
) as "sharedLinks"
|
|
from
|
|
"album"
|
|
inner join (
|
|
select
|
|
"album_user"."albumId" as "id"
|
|
from
|
|
"album_user"
|
|
where
|
|
"album_user"."userId" = $2
|
|
and "album_user"."albumId" in (
|
|
select
|
|
"album_user"."albumId"
|
|
from
|
|
"album_user"
|
|
where
|
|
"album_user"."role" != 'owner'
|
|
)
|
|
union
|
|
select
|
|
"shared_link"."albumId" as "id"
|
|
from
|
|
"shared_link"
|
|
where
|
|
"shared_link"."userId" = $3
|
|
and "shared_link"."albumId" is not null
|
|
) as "matching" on "matching"."id" = "album"."id"
|
|
inner join "album_user" on "album_user"."albumId" = "album"."id"
|
|
and "album_user"."role" = 'owner'
|
|
where
|
|
"album"."deletedAt" is null
|
|
order by
|
|
"album"."createdAt" desc
|
|
|
|
-- AlbumRepository.getNotShared
|
|
select
|
|
"album".*,
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"shared_link".*
|
|
from
|
|
"shared_link"
|
|
where
|
|
"shared_link"."albumId" = "album"."id"
|
|
) as agg
|
|
) as "sharedLinks",
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"album_user"."role",
|
|
(
|
|
select
|
|
to_json(obj)
|
|
from
|
|
(
|
|
select
|
|
"id",
|
|
"name",
|
|
"email",
|
|
"avatarColor",
|
|
"profileImagePath",
|
|
"profileChangedAt"
|
|
from
|
|
(
|
|
select
|
|
1
|
|
) as "dummy"
|
|
) as obj
|
|
) as "user"
|
|
from
|
|
"album_user"
|
|
inner join "user" on "user"."id" = "album_user"."userId"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
order by
|
|
"album_user"."role",
|
|
"album_user"."userId" = $1 desc,
|
|
"user"."name" asc
|
|
) as agg
|
|
) as "albumUsers"
|
|
from
|
|
"album"
|
|
inner join "album_user" on "album_user"."albumId" = "album"."id"
|
|
and "album_user"."userId" = $2
|
|
and "album_user"."role" = 'owner'
|
|
where
|
|
"album"."deletedAt" is null
|
|
and not exists (
|
|
select
|
|
from
|
|
"album_user" as "au"
|
|
where
|
|
"au"."albumId" = "album"."id"
|
|
and "au"."role" != 'owner'
|
|
)
|
|
and not exists (
|
|
select
|
|
from
|
|
"shared_link"
|
|
where
|
|
"shared_link"."albumId" = "album"."id"
|
|
)
|
|
order by
|
|
"album"."createdAt" desc
|
|
|
|
-- AlbumRepository.removeAssetsFromAll
|
|
delete from "album_asset"
|
|
where
|
|
"album_asset"."assetId" in ($1)
|
|
|
|
-- AlbumRepository.getAssetIds
|
|
select
|
|
*
|
|
from
|
|
"album_asset"
|
|
where
|
|
"album_asset"."albumId" = $1
|
|
and "album_asset"."assetId" in ($2)
|
|
|
|
-- AlbumRepository.addAssetIds
|
|
insert into
|
|
"album_asset"
|
|
select
|
|
$1::uuid as "albumId",
|
|
unnest($2::uuid[]) as "assetId"
|
|
from
|
|
(
|
|
select
|
|
1
|
|
) as "dummy"
|
|
on conflict do nothing
|
|
|
|
-- AlbumRepository.create
|
|
with
|
|
"album" as (
|
|
insert into
|
|
"album" ("albumName")
|
|
values
|
|
($1)
|
|
returning
|
|
*
|
|
),
|
|
"album_user" as (
|
|
insert into
|
|
"album_user"
|
|
select
|
|
"album"."id" as "albumId",
|
|
unnest($2::uuid[]) as "userId",
|
|
unnest($3::album_user_role_enum[]) as "role"
|
|
from
|
|
"album"
|
|
returning
|
|
"album_user"."albumId",
|
|
"album_user"."userId",
|
|
"album_user"."role"
|
|
),
|
|
"album_asset" as (
|
|
insert into
|
|
"album_asset"
|
|
select
|
|
"album"."id" as "albumId",
|
|
unnest($4::uuid[]) as "assetId"
|
|
from
|
|
"album"
|
|
on conflict do nothing
|
|
returning
|
|
"album_asset"."albumId",
|
|
"album_asset"."assetId"
|
|
)
|
|
select
|
|
"album".*,
|
|
(
|
|
select
|
|
coalesce(json_agg(agg), '[]')
|
|
from
|
|
(
|
|
select
|
|
"album_user"."role",
|
|
(
|
|
select
|
|
to_json(obj)
|
|
from
|
|
(
|
|
select
|
|
"id",
|
|
"name",
|
|
"email",
|
|
"avatarColor",
|
|
"profileImagePath",
|
|
"profileChangedAt"
|
|
from
|
|
(
|
|
select
|
|
1
|
|
) as "dummy"
|
|
) as obj
|
|
) as "user"
|
|
from
|
|
"album_user"
|
|
inner join "user" on "user"."id" = "album_user"."userId"
|
|
where
|
|
"album_user"."albumId" = "album"."id"
|
|
order by
|
|
"album_user"."role",
|
|
"user"."name" asc
|
|
) as agg
|
|
) as "albumUsers",
|
|
(
|
|
select
|
|
json_agg("asset") as "assets"
|
|
from
|
|
(
|
|
select
|
|
"asset".*,
|
|
"asset_exif" as "exifInfo"
|
|
from
|
|
"asset"
|
|
left join "asset_exif" on "asset"."id" = "asset_exif"."assetId"
|
|
inner join "album_asset" on "album_asset"."assetId" = "asset"."id"
|
|
where
|
|
"album_asset"."albumId" = "album"."id"
|
|
and "asset"."deletedAt" is null
|
|
and "asset"."visibility" in ('archive', 'timeline')
|
|
order by
|
|
"asset"."fileCreatedAt" desc
|
|
) as "asset"
|
|
) as "assets"
|
|
from
|
|
"album"
|
|
|
|
-- AlbumRepository.getContributorCounts
|
|
select
|
|
"asset"."ownerId" as "userId",
|
|
count(*) as "assetCount"
|
|
from
|
|
"album_asset"
|
|
inner join "asset" on "asset"."id" = "assetId"
|
|
where
|
|
"asset"."deletedAt" is null
|
|
and "album_asset"."albumId" = $1
|
|
group by
|
|
"asset"."ownerId"
|
|
order by
|
|
"assetCount" desc
|
|
|
|
-- AlbumRepository.copyAlbums
|
|
insert into
|
|
"album_asset"
|
|
select
|
|
"album_asset"."albumId",
|
|
$1 as "assetId"
|
|
from
|
|
"album_asset"
|
|
where
|
|
"album_asset"."assetId" = $2
|
|
on conflict do nothing
|