feat(server): visibility column (#17939)

* feat: private view

* pr feedback

* sql generation

* feat: visibility column

* fix: set visibility value as the same as the still part after unlinked live photos

* fix: test

* pr feedback
This commit is contained in:
Alex 2025-05-06 12:12:48 -05:00 committed by GitHub
parent 016d7a6ceb
commit d33ce13561
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
90 changed files with 1137 additions and 867 deletions

View file

@ -110,8 +110,11 @@ from
and "assets"."deletedAt" is null
where
"partner"."sharedWithId" = $1
and "assets"."isArchived" = $2
and "assets"."id" in ($3)
and (
"assets"."visibility" = 'timeline'
or "assets"."visibility" = 'hidden'
)
and "assets"."id" in ($2)
-- AccessRepository.asset.checkSharedLinkAccess
select

View file

@ -7,7 +7,7 @@ select
"ownerId",
"duplicateId",
"stackId",
"isVisible",
"visibility",
"smart_search"."embedding",
(
select
@ -83,7 +83,7 @@ from
inner join "asset_job_status" on "asset_job_status"."assetId" = "assets"."id"
where
"assets"."deletedAt" is null
and "assets"."isVisible" = $1
and "assets"."visibility" != $1
and (
"asset_job_status"."previewAt" is null
or "asset_job_status"."thumbnailAt" is null
@ -118,7 +118,7 @@ where
-- AssetJobRepository.getForGenerateThumbnailJob
select
"assets"."id",
"assets"."isVisible",
"assets"."visibility",
"assets"."originalFileName",
"assets"."originalPath",
"assets"."ownerId",
@ -155,7 +155,7 @@ select
"assets"."fileCreatedAt",
"assets"."fileModifiedAt",
"assets"."isExternal",
"assets"."isVisible",
"assets"."visibility",
"assets"."libraryId",
"assets"."livePhotoVideoId",
"assets"."localDateTime",
@ -201,7 +201,7 @@ from
"assets"
inner join "asset_job_status" as "job_status" on "assetId" = "assets"."id"
where
"assets"."isVisible" = $1
"assets"."visibility" != $1
and "assets"."deletedAt" is null
and "job_status"."previewAt" is not null
and not exists (
@ -220,7 +220,7 @@ from
"assets"
inner join "asset_job_status" as "job_status" on "assetId" = "assets"."id"
where
"assets"."isVisible" = $1
"assets"."visibility" != $1
and "assets"."deletedAt" is null
and "job_status"."previewAt" is not null
and not exists (
@ -234,7 +234,7 @@ where
-- AssetJobRepository.getForClipEncoding
select
"assets"."id",
"assets"."isVisible",
"assets"."visibility",
(
select
coalesce(json_agg(agg), '[]')
@ -259,7 +259,7 @@ where
-- AssetJobRepository.getForDetectFacesJob
select
"assets"."id",
"assets"."isVisible",
"assets"."visibility",
to_json("exif") as "exifInfo",
(
select
@ -312,7 +312,7 @@ where
-- AssetJobRepository.getForAssetDeletion
select
"assets"."id",
"assets"."isVisible",
"assets"."visibility",
"assets"."libraryId",
"assets"."ownerId",
"assets"."livePhotoVideoId",
@ -372,7 +372,7 @@ from
"assets" as "stacked"
where
"stacked"."deletedAt" is not null
and "stacked"."isArchived" = $1
and "stacked"."visibility" != $1
and "stacked"."stackId" = "asset_stack"."id"
group by
"asset_stack"."id"
@ -391,7 +391,7 @@ where
"assets"."encodedVideoPath" is null
or "assets"."encodedVideoPath" = $2
)
and "assets"."isVisible" = $3
and "assets"."visibility" != $3
and "assets"."deletedAt" is null
-- AssetJobRepository.getForVideoConversion
@ -417,7 +417,7 @@ where
"asset_job_status"."metadataExtractedAt" is null
or "asset_job_status"."assetId" is null
)
and "assets"."isVisible" = $1
and "assets"."visibility" != $1
and "assets"."deletedAt" is null
-- AssetJobRepository.getForStorageTemplateJob
@ -480,7 +480,7 @@ where
"assets"."sidecarPath" = $1
or "assets"."sidecarPath" is null
)
and "assets"."isVisible" = $2
and "assets"."visibility" != $2
-- AssetJobRepository.streamForDetectFacesJob
select
@ -489,7 +489,7 @@ from
"assets"
inner join "asset_job_status" as "job_status" on "assetId" = "assets"."id"
where
"assets"."isVisible" = $1
"assets"."visibility" != $1
and "assets"."deletedAt" is null
and "job_status"."previewAt" is not null
and "job_status"."facesRecognizedAt" is null

View file

@ -43,21 +43,20 @@ with
"asset_job_status"."previewAt" is not null
and (assets."localDateTime" at time zone 'UTC')::date = today.date
and "assets"."ownerId" = any ($3::uuid[])
and "assets"."isVisible" = $4
and "assets"."isArchived" = $5
and "assets"."visibility" = $4
and exists (
select
from
"asset_files"
where
"assetId" = "assets"."id"
and "asset_files"."type" = $6
and "asset_files"."type" = $5
)
and "assets"."deletedAt" is null
order by
(assets."localDateTime" at time zone 'UTC')::date desc
limit
$7
$6
) as "a" on true
inner join "exif" on "a"."id" = "exif"."assetId"
)
@ -159,7 +158,7 @@ from
where
"ownerId" = $1::uuid
and "deviceId" = $2
and "isVisible" = $3
and "visibility" != $3
and "deletedAt" is null
-- AssetRepository.getLivePhotoCount
@ -241,7 +240,10 @@ with
"assets"
where
"assets"."deletedAt" is null
and "assets"."isVisible" = $2
and (
"assets"."visibility" = $2
or "assets"."visibility" = $3
)
)
select
"timeBucket",
@ -271,7 +273,7 @@ from
where
"stacked"."stackId" = "asset_stack"."id"
and "stacked"."deletedAt" is null
and "stacked"."isArchived" = $1
and "stacked"."visibility" != $1
group by
"asset_stack"."id"
) as "stacked_assets" on "asset_stack"."id" is not null
@ -281,8 +283,11 @@ where
or "assets"."stackId" is null
)
and "assets"."deletedAt" is null
and "assets"."isVisible" = $2
and date_trunc($3, "localDateTime" at time zone 'UTC') at time zone 'UTC' = $4
and (
"assets"."visibility" = $2
or "assets"."visibility" = $3
)
and date_trunc($4, "localDateTime" at time zone 'UTC') at time zone 'UTC' = $5
order by
"assets"."localDateTime" desc
@ -307,7 +312,7 @@ with
"assets"."ownerId" = $1::uuid
and "assets"."duplicateId" is not null
and "assets"."deletedAt" is null
and "assets"."isVisible" = $2
and "assets"."visibility" != $2
and "assets"."stackId" is null
group by
"assets"."duplicateId"
@ -365,12 +370,11 @@ from
inner join "cities" on "exif"."city" = "cities"."city"
where
"ownerId" = $2::uuid
and "isVisible" = $3
and "isArchived" = $4
and "type" = $5
and "visibility" = $3
and "type" = $4
and "deletedAt" is null
limit
$6
$5
-- AssetRepository.getAllForUserFullSync
select
@ -394,7 +398,7 @@ from
) as "stacked_assets" on "asset_stack"."id" is not null
where
"assets"."ownerId" = $1::uuid
and "assets"."isVisible" = $2
and "assets"."visibility" != $2
and "assets"."updatedAt" <= $3
and "assets"."id" > $4
order by
@ -424,7 +428,7 @@ from
) as "stacked_assets" on "asset_stack"."id" is not null
where
"assets"."ownerId" = any ($1::uuid[])
and "assets"."isVisible" = $2
and "assets"."visibility" != $2
and "assets"."updatedAt" > $3
limit
$4

View file

@ -35,14 +35,14 @@ select
where
(
"assets"."type" = $1
and "assets"."isVisible" = $2
and "assets"."visibility" != $2
)
) as "photos",
count(*) filter (
where
(
"assets"."type" = $3
and "assets"."isVisible" = $4
and "assets"."visibility" != $4
)
) as "videos",
coalesce(sum("exif"."fileSizeInByte"), $5) as "usage"

View file

@ -14,7 +14,7 @@ from
and "exif"."latitude" is not null
and "exif"."longitude" is not null
where
"isVisible" = $1
"assets"."visibility" = $1
and "deletedAt" is null
and (
"ownerId" in ($2)

View file

@ -107,7 +107,7 @@ select
(
select
"assets"."ownerId",
"assets"."isArchived",
"assets"."visibility",
"assets"."fileCreatedAt"
from
"assets"
@ -203,7 +203,7 @@ from
"asset_faces"
left join "assets" on "assets"."id" = "asset_faces"."assetId"
and "asset_faces"."personId" = $1
and "assets"."isArchived" = $2
and "assets"."visibility" != $2
and "assets"."deletedAt" is null
where
"asset_faces"."deletedAt" is null
@ -220,7 +220,7 @@ from
inner join "asset_faces" on "asset_faces"."personId" = "person"."id"
inner join "assets" on "assets"."id" = "asset_faces"."assetId"
and "assets"."deletedAt" is null
and "assets"."isArchived" = $2
and "assets"."visibility" != $2
where
"person"."ownerId" = $3
and "asset_faces"."deletedAt" is null

View file

@ -7,11 +7,11 @@ from
"assets"
inner join "exif" on "assets"."id" = "exif"."assetId"
where
"assets"."fileCreatedAt" >= $1
and "exif"."lensModel" = $2
and "assets"."ownerId" = any ($3::uuid[])
and "assets"."isFavorite" = $4
and "assets"."isArchived" = $5
"assets"."visibility" = $1
and "assets"."fileCreatedAt" >= $2
and "exif"."lensModel" = $3
and "assets"."ownerId" = any ($4::uuid[])
and "assets"."isFavorite" = $5
and "assets"."deletedAt" is null
order by
"assets"."fileCreatedAt" desc
@ -28,11 +28,11 @@ offset
"assets"
inner join "exif" on "assets"."id" = "exif"."assetId"
where
"assets"."fileCreatedAt" >= $1
and "exif"."lensModel" = $2
and "assets"."ownerId" = any ($3::uuid[])
and "assets"."isFavorite" = $4
and "assets"."isArchived" = $5
"assets"."visibility" = $1
and "assets"."fileCreatedAt" >= $2
and "exif"."lensModel" = $3
and "assets"."ownerId" = any ($4::uuid[])
and "assets"."isFavorite" = $5
and "assets"."deletedAt" is null
and "assets"."id" < $6
order by
@ -48,11 +48,11 @@ union all
"assets"
inner join "exif" on "assets"."id" = "exif"."assetId"
where
"assets"."fileCreatedAt" >= $8
and "exif"."lensModel" = $9
and "assets"."ownerId" = any ($10::uuid[])
and "assets"."isFavorite" = $11
and "assets"."isArchived" = $12
"assets"."visibility" = $8
and "assets"."fileCreatedAt" >= $9
and "exif"."lensModel" = $10
and "assets"."ownerId" = any ($11::uuid[])
and "assets"."isFavorite" = $12
and "assets"."deletedAt" is null
and "assets"."id" > $13
order by
@ -71,11 +71,11 @@ from
inner join "exif" on "assets"."id" = "exif"."assetId"
inner join "smart_search" on "assets"."id" = "smart_search"."assetId"
where
"assets"."fileCreatedAt" >= $1
and "exif"."lensModel" = $2
and "assets"."ownerId" = any ($3::uuid[])
and "assets"."isFavorite" = $4
and "assets"."isArchived" = $5
"assets"."visibility" = $1
and "assets"."fileCreatedAt" >= $2
and "exif"."lensModel" = $3
and "assets"."ownerId" = any ($4::uuid[])
and "assets"."isFavorite" = $5
and "assets"."deletedAt" is null
order by
smart_search.embedding <=> $6
@ -97,7 +97,7 @@ with
where
"assets"."ownerId" = any ($2::uuid[])
and "assets"."deletedAt" is null
and "assets"."isVisible" = $3
and "assets"."visibility" != $3
and "assets"."type" = $4
and "assets"."id" != $5::uuid
and "assets"."stackId" is null
@ -176,14 +176,13 @@ with recursive
inner join "assets" on "assets"."id" = "exif"."assetId"
where
"assets"."ownerId" = any ($1::uuid[])
and "assets"."isVisible" = $2
and "assets"."isArchived" = $3
and "assets"."type" = $4
and "assets"."visibility" = $2
and "assets"."type" = $3
and "assets"."deletedAt" is null
order by
"city"
limit
$5
$4
)
union all
(
@ -200,16 +199,15 @@ with recursive
"exif"
inner join "assets" on "assets"."id" = "exif"."assetId"
where
"assets"."ownerId" = any ($6::uuid[])
and "assets"."isVisible" = $7
and "assets"."isArchived" = $8
and "assets"."type" = $9
"assets"."ownerId" = any ($5::uuid[])
and "assets"."visibility" = $6
and "assets"."type" = $7
and "assets"."deletedAt" is null
and "exif"."city" > "cte"."city"
order by
"city"
limit
$10
$8
) as "l" on true
)
)
@ -231,7 +229,7 @@ from
inner join "assets" on "assets"."id" = "exif"."assetId"
where
"ownerId" = any ($1::uuid[])
and "isVisible" = $2
and "visibility" != $2
and "deletedAt" is null
and "state" is not null
@ -243,7 +241,7 @@ from
inner join "assets" on "assets"."id" = "exif"."assetId"
where
"ownerId" = any ($1::uuid[])
and "isVisible" = $2
and "visibility" != $2
and "deletedAt" is null
and "city" is not null
@ -255,7 +253,7 @@ from
inner join "assets" on "assets"."id" = "exif"."assetId"
where
"ownerId" = any ($1::uuid[])
and "isVisible" = $2
and "visibility" != $2
and "deletedAt" is null
and "make" is not null
@ -267,6 +265,6 @@ from
inner join "assets" on "assets"."id" = "exif"."assetId"
where
"ownerId" = any ($1::uuid[])
and "isVisible" = $2
and "visibility" != $2
and "deletedAt" is null
and "model" is not null

View file

@ -84,7 +84,7 @@ select
"type",
"deletedAt",
"isFavorite",
"isVisible",
"visibility",
"updateId"
from
"assets"
@ -106,7 +106,7 @@ select
"type",
"deletedAt",
"isFavorite",
"isVisible",
"visibility",
"updateId"
from
"assets"

View file

@ -285,14 +285,14 @@ select
where
(
"assets"."type" = 'IMAGE'
and "assets"."isVisible" = true
and "assets"."visibility" != 'hidden'
)
) as "photos",
count(*) filter (
where
(
"assets"."type" = 'VIDEO'
and "assets"."isVisible" = true
and "assets"."visibility" != 'hidden'
)
) as "videos",
coalesce(

View file

@ -7,8 +7,7 @@ from
"assets"
where
"ownerId" = $2::uuid
and "isVisible" = $3
and "isArchived" = $4
and "visibility" = $3
and "deletedAt" is null
and "fileCreatedAt" is not null
and "fileModifiedAt" is not null
@ -23,13 +22,12 @@ from
left join "exif" on "assets"."id" = "exif"."assetId"
where
"ownerId" = $1::uuid
and "isVisible" = $2
and "isArchived" = $3
and "visibility" = $2
and "deletedAt" is null
and "fileCreatedAt" is not null
and "fileModifiedAt" is not null
and "localDateTime" is not null
and "originalPath" like $4
and "originalPath" not like $5
and "originalPath" like $3
and "originalPath" not like $4
order by
regexp_replace("assets"."originalPath", $6, $7) asc
regexp_replace("assets"."originalPath", $5, $6) asc