immich/server/src/queries/shared.link.repository.sql
2025-08-25 17:10:31 -04:00

239 lines
5.5 KiB
SQL

-- NOTE: This file is auto generated by ./sql-generator
-- SharedLinkRepository.get
select
"shared_link".*,
coalesce(
json_agg("a") filter (
where
"a"."id" is not null
),
'[]'
) as "assets",
to_json("album") as "album"
from
"shared_link"
left join lateral (
select
"asset".*,
to_json("exifInfo") as "exifInfo"
from
"shared_link_asset"
inner join "asset" on "asset"."id" = "shared_link_asset"."assetsId"
inner join lateral (
select
"asset_exif".*
from
"asset_exif"
where
"asset_exif"."assetId" = "asset"."id"
) as "exifInfo" on true
where
"shared_link"."id" = "shared_link_asset"."sharedLinksId"
and "asset"."deletedAt" is null
order by
"asset"."fileCreatedAt" asc
) as "a" on true
left join lateral (
select
"album".*,
coalesce(
json_agg(
"assets"
order by
"assets"."fileCreatedAt" asc
) filter (
where
"assets"."id" is not null
),
'[]'
) as "assets",
to_json("owner") as "owner"
from
"album"
left join "album_asset" on "album_asset"."albumsId" = "album"."id"
left join lateral (
select
"asset".*,
to_json("exifInfo") as "exifInfo"
from
"asset"
inner join lateral (
select
"asset_exif".*
from
"asset_exif"
where
"asset_exif"."assetId" = "asset"."id"
) as "exifInfo" on true
where
"album_asset"."assetsId" = "asset"."id"
and "asset"."deletedAt" is null
order by
"asset"."fileCreatedAt" asc
) as "assets" on true
inner join lateral (
select
"user".*
from
"user"
where
"user"."id" = "album"."ownerId"
and "user"."deletedAt" is null
) as "owner" on true
where
"album"."id" = "shared_link"."albumId"
and "album"."deletedAt" is null
group by
"album"."id",
"owner".*
) as "album" on true
where
"shared_link"."id" = $1
and "shared_link"."userId" = $2
and (
"shared_link"."type" = $3
or "album"."id" is not null
)
group by
"shared_link"."id",
"album".*
order by
"shared_link"."createdAt" desc
-- SharedLinkRepository.getAll
select distinct
on ("shared_link"."createdAt") "shared_link".*,
"assets"."assets",
to_json("album") as "album"
from
"shared_link"
left join "shared_link_asset" on "shared_link_asset"."sharedLinksId" = "shared_link"."id"
left join lateral (
select
json_agg("asset") as "assets"
from
"asset"
where
"asset"."id" = "shared_link_asset"."assetsId"
and "asset"."deletedAt" is null
) as "assets" on true
left join lateral (
select
"album".*,
to_json("owner") as "owner"
from
"album"
inner join lateral (
select
"user"."id",
"user"."email",
"user"."createdAt",
"user"."profileImagePath",
"user"."isAdmin",
"user"."shouldChangePassword",
"user"."deletedAt",
"user"."oauthId",
"user"."updatedAt",
"user"."storageLabel",
"user"."name",
"user"."quotaSizeInBytes",
"user"."quotaUsageInBytes",
"user"."status",
"user"."profileChangedAt"
from
"user"
where
"user"."id" = "album"."ownerId"
and "user"."deletedAt" is null
) as "owner" on true
where
"album"."id" = "shared_link"."albumId"
and "album"."deletedAt" is null
) as "album" on true
where
"shared_link"."userId" = $1
and (
"shared_link"."type" = $2
or "album"."id" is not null
)
and "shared_link"."albumId" = $3
order by
"shared_link"."createdAt" desc
-- SharedLinkRepository.getByKey
select
"shared_link"."id",
"shared_link"."userId",
"shared_link"."expiresAt",
"shared_link"."showExif",
"shared_link"."allowUpload",
"shared_link"."allowDownload",
"shared_link"."password",
(
select
to_json(obj)
from
(
select
"user"."id",
"user"."name",
"user"."email",
"user"."isAdmin",
"user"."quotaUsageInBytes",
"user"."quotaSizeInBytes"
from
"user"
where
"user"."id" = "shared_link"."userId"
) as obj
) as "user"
from
"shared_link"
left join "album" on "album"."id" = "shared_link"."albumId"
where
"album"."deletedAt" is null
and (
"shared_link"."type" = $1
or "album"."id" is not null
)
and "shared_link"."key" = $2
-- SharedLinkRepository.getBySlug
select
"shared_link"."id",
"shared_link"."userId",
"shared_link"."expiresAt",
"shared_link"."showExif",
"shared_link"."allowUpload",
"shared_link"."allowDownload",
"shared_link"."password",
(
select
to_json(obj)
from
(
select
"user"."id",
"user"."name",
"user"."email",
"user"."isAdmin",
"user"."quotaUsageInBytes",
"user"."quotaSizeInBytes"
from
"user"
where
"user"."id" = "shared_link"."userId"
) as obj
) as "user"
from
"shared_link"
left join "album" on "album"."id" = "shared_link"."albumId"
where
"album"."deletedAt" is null
and (
"shared_link"."type" = $1
or "album"."id" is not null
)
and "shared_link"."slug" = $2