mirror of
https://github.com/immich-app/immich
synced 2025-11-14 17:36:12 +00:00
119 lines
2.2 KiB
SQL
119 lines
2.2 KiB
SQL
-- NOTE: This file is auto generated by ./sql-generator
|
|
|
|
-- DuplicateRepository.getAll
|
|
with
|
|
"duplicates" as (
|
|
select
|
|
"assets"."duplicateId",
|
|
json_agg(
|
|
"asset"
|
|
order by
|
|
"assets"."localDateTime" asc
|
|
) as "assets"
|
|
from
|
|
"assets"
|
|
left join lateral (
|
|
select
|
|
"assets".*,
|
|
"exif" as "exifInfo"
|
|
from
|
|
"exif"
|
|
where
|
|
"exif"."assetId" = "assets"."id"
|
|
) as "asset" on true
|
|
where
|
|
"assets"."visibility" in ('archive', 'timeline')
|
|
and "assets"."ownerId" = $1::uuid
|
|
and "assets"."duplicateId" is not null
|
|
and "assets"."deletedAt" is null
|
|
and "assets"."stackId" is null
|
|
group by
|
|
"assets"."duplicateId"
|
|
),
|
|
"unique" as (
|
|
select
|
|
"duplicateId"
|
|
from
|
|
"duplicates"
|
|
where
|
|
json_array_length("assets") = $2
|
|
),
|
|
"removed_unique" as (
|
|
update "assets"
|
|
set
|
|
"duplicateId" = $3
|
|
from
|
|
"unique"
|
|
where
|
|
"assets"."duplicateId" = "unique"."duplicateId"
|
|
)
|
|
select
|
|
*
|
|
from
|
|
"duplicates"
|
|
where
|
|
not exists (
|
|
select
|
|
from
|
|
"unique"
|
|
where
|
|
"unique"."duplicateId" = "duplicates"."duplicateId"
|
|
)
|
|
|
|
-- DuplicateRepository.delete
|
|
update "assets"
|
|
set
|
|
"duplicateId" = $1
|
|
where
|
|
"ownerId" = $2
|
|
and "duplicateId" = $3
|
|
|
|
-- DuplicateRepository.deleteAll
|
|
update "assets"
|
|
set
|
|
"duplicateId" = $1
|
|
where
|
|
"ownerId" = $2
|
|
and "duplicateId" in ($3)
|
|
|
|
-- DuplicateRepository.search
|
|
begin
|
|
set
|
|
local vchordrq.probes = 1
|
|
with
|
|
"cte" as (
|
|
select
|
|
"assets"."id" as "assetId",
|
|
"assets"."duplicateId",
|
|
smart_search.embedding <=> $1 as "distance"
|
|
from
|
|
"assets"
|
|
inner join "smart_search" on "assets"."id" = "smart_search"."assetId"
|
|
where
|
|
"assets"."visibility" in ('archive', 'timeline')
|
|
and "assets"."ownerId" = any ($2::uuid[])
|
|
and "assets"."deletedAt" is null
|
|
and "assets"."type" = $3
|
|
and "assets"."id" != $4::uuid
|
|
and "assets"."stackId" is null
|
|
order by
|
|
"distance"
|
|
limit
|
|
$5
|
|
)
|
|
select
|
|
*
|
|
from
|
|
"cte"
|
|
where
|
|
"cte"."distance" <= $6
|
|
commit
|
|
|
|
-- DuplicateRepository.merge
|
|
update "assets"
|
|
set
|
|
where
|
|
(
|
|
"duplicateId" = any ($1::uuid[])
|
|
or "id" = any ($2::uuid[])
|
|
)
|