diff --git a/server/src/dtos/album.dto.ts b/server/src/dtos/album.dto.ts index d5c8c244c5..797118a50e 100644 --- a/server/src/dtos/album.dto.ts +++ b/server/src/dtos/album.dto.ts @@ -126,8 +126,8 @@ export const mapAlbum = (entity: AlbumEntity, withAssets: boolean, auth?: AuthDt const sharedUsers: UserResponseDto[] = []; const albumUsers: AlbumUserResponseDto[] = []; - if (entity.sharedUsers) { - for (const albumUser of entity.sharedUsers) { + if (entity.albumUsers) { + for (const albumUser of entity.albumUsers) { sharedUsers.push(mapUser(albumUser.user)); albumUsers.push({ user: mapUser(albumUser.user), diff --git a/server/src/entities/album.entity.ts b/server/src/entities/album.entity.ts index da362e13c2..7b937f8ec5 100644 --- a/server/src/entities/album.entity.ts +++ b/server/src/entities/album.entity.ts @@ -54,7 +54,7 @@ export class AlbumEntity { albumThumbnailAssetId!: string | null; @OneToMany(() => AlbumUserEntity, (permission) => permission.album) - sharedUsers!: AlbumUserEntity[]; + albumUsers!: AlbumUserEntity[]; @ManyToMany(() => AssetEntity, (asset) => asset.albums) @JoinTable() diff --git a/server/src/queries/access.repository.sql b/server/src/queries/access.repository.sql index f6eed63bb1..a0fe0a8980 100644 --- a/server/src/queries/access.repository.sql +++ b/server/src/queries/access.repository.sql @@ -37,16 +37,16 @@ SELECT "album"."id" AS "album_id" FROM "albums" "album" - LEFT JOIN "albums_shared_users_users" "albumSharedUsers" ON "albumSharedUsers"."albumsId" = "album"."id" - LEFT JOIN "users" "sharedUsers" ON "sharedUsers"."id" = "albumSharedUsers"."usersId" - AND ("sharedUsers"."deletedAt" IS NULL) + LEFT JOIN "albums_shared_users_users" "album_albumUsers_users" ON "album_albumUsers_users"."albumsId" = "album"."id" + LEFT JOIN "users" "albumUsers" ON "albumUsers"."id" = "album_albumUsers_users"."usersId" + AND ("albumUsers"."deletedAt" IS NULL) WHERE ( "album"."id" IN ($1) AND "album"."isActivityEnabled" = true AND ( "album"."ownerId" = $2 - OR "sharedUsers"."id" = $2 + OR "albumUsers"."id" = $2 ) ) AND ("album"."deletedAt" IS NULL) @@ -68,15 +68,15 @@ WHERE -- AccessRepository.album.checkSharedAlbumAccess SELECT "AlbumEntity"."id" AS "AlbumEntity_id", - "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" AS "AlbumEntity__AlbumEntity_sharedUsers_albumsId", - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" AS "AlbumEntity__AlbumEntity_sharedUsers_usersId", - "AlbumEntity__AlbumEntity_sharedUsers"."role" AS "AlbumEntity__AlbumEntity_sharedUsers_role" + "AlbumEntity__AlbumEntity_albumUsers"."albumsId" AS "AlbumEntity__AlbumEntity_albumUsers_albumsId", + "AlbumEntity__AlbumEntity_albumUsers"."usersId" AS "AlbumEntity__AlbumEntity_albumUsers_usersId", + "AlbumEntity__AlbumEntity_albumUsers"."role" AS "AlbumEntity__AlbumEntity_albumUsers_role" FROM "albums" "AlbumEntity" - LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_sharedUsers" ON "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" = "AlbumEntity"."id" - LEFT JOIN "users" "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a" ON "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" = "AlbumEntity__AlbumEntity_sharedUsers"."usersId" + LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_albumUsers" ON "AlbumEntity__AlbumEntity_albumUsers"."albumsId" = "AlbumEntity"."id" + LEFT JOIN "users" "a641d58cf46d4a391ba060ac4dc337665c69ffea" ON "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" = "AlbumEntity__AlbumEntity_albumUsers"."usersId" AND ( - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" IS NULL + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" IS NULL ) WHERE ( @@ -87,12 +87,12 @@ WHERE ( ( ( - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" = $2 + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" = $2 ) ) ) AND ( - "AlbumEntity__AlbumEntity_sharedUsers"."role" IN ($3, $4) + "AlbumEntity__AlbumEntity_albumUsers"."role" IN ($3, $4) ) ) ) @@ -121,15 +121,15 @@ FROM INNER JOIN "albums_assets_assets" "album_asset" ON "album_asset"."albumsId" = "album"."id" INNER JOIN "assets" "asset" ON "asset"."id" = "album_asset"."assetsId" AND ("asset"."deletedAt" IS NULL) - LEFT JOIN "albums_shared_users_users" "albumSharedUsers" ON "albumSharedUsers"."albumsId" = "album"."id" - LEFT JOIN "users" "sharedUsers" ON "sharedUsers"."id" = "albumSharedUsers"."usersId" - AND ("sharedUsers"."deletedAt" IS NULL) + LEFT JOIN "albums_shared_users_users" "album_albumUsers_users" ON "album_albumUsers_users"."albumsId" = "album"."id" + LEFT JOIN "users" "albumUsers" ON "albumUsers"."id" = "album_albumUsers_users"."usersId" + AND ("albumUsers"."deletedAt" IS NULL) WHERE ( array["asset"."id", "asset"."livePhotoVideoId"] && array[$1]::uuid [] AND ( "album"."ownerId" = $2 - OR "sharedUsers"."id" = $2 + OR "albumUsers"."id" = $2 ) ) AND ("album"."deletedAt" IS NULL) diff --git a/server/src/queries/album.repository.sql b/server/src/queries/album.repository.sql index cd7567f462..2037e320a1 100644 --- a/server/src/queries/album.repository.sql +++ b/server/src/queries/album.repository.sql @@ -32,25 +32,25 @@ FROM "AlbumEntity__AlbumEntity_owner"."memoriesEnabled" AS "AlbumEntity__AlbumEntity_owner_memoriesEnabled", "AlbumEntity__AlbumEntity_owner"."quotaSizeInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaSizeInBytes", "AlbumEntity__AlbumEntity_owner"."quotaUsageInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaUsageInBytes", - "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" AS "AlbumEntity__AlbumEntity_sharedUsers_albumsId", - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" AS "AlbumEntity__AlbumEntity_sharedUsers_usersId", - "AlbumEntity__AlbumEntity_sharedUsers"."role" AS "AlbumEntity__AlbumEntity_sharedUsers_role", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_id", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."name" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_name", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."avatarColor" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_avatarColor", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."isAdmin" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_isAdmin", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."email" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_email", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."storageLabel" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_storageLabel", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."oauthId" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_oauthId", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."profileImagePath" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_profileImagePath", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."shouldChangePassword" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_shouldChangePassword", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."createdAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_createdAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_deletedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."status" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_status", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."updatedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_updatedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."memoriesEnabled" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_memoriesEnabled", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaSizeInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaSizeInBytes", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaUsageInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaUsageInBytes", + "AlbumEntity__AlbumEntity_albumUsers"."albumsId" AS "AlbumEntity__AlbumEntity_albumUsers_albumsId", + "AlbumEntity__AlbumEntity_albumUsers"."usersId" AS "AlbumEntity__AlbumEntity_albumUsers_usersId", + "AlbumEntity__AlbumEntity_albumUsers"."role" AS "AlbumEntity__AlbumEntity_albumUsers_role", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_id", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."name" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_name", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."avatarColor" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_avatarColor", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."isAdmin" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_isAdmin", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."email" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_email", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."storageLabel" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_storageLabel", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."oauthId" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_oauthId", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."profileImagePath" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_profileImagePath", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."shouldChangePassword" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_shouldChangePassword", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."createdAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_createdAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_deletedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."status" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_status", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."updatedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_updatedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."memoriesEnabled" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_memoriesEnabled", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaSizeInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaSizeInBytes", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaUsageInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaUsageInBytes", "AlbumEntity__AlbumEntity_sharedLinks"."id" AS "AlbumEntity__AlbumEntity_sharedLinks_id", "AlbumEntity__AlbumEntity_sharedLinks"."description" AS "AlbumEntity__AlbumEntity_sharedLinks_description", "AlbumEntity__AlbumEntity_sharedLinks"."password" AS "AlbumEntity__AlbumEntity_sharedLinks_password", @@ -69,10 +69,10 @@ FROM AND ( "AlbumEntity__AlbumEntity_owner"."deletedAt" IS NULL ) - LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_sharedUsers" ON "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" = "AlbumEntity"."id" - LEFT JOIN "users" "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a" ON "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" = "AlbumEntity__AlbumEntity_sharedUsers"."usersId" + LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_albumUsers" ON "AlbumEntity__AlbumEntity_albumUsers"."albumsId" = "AlbumEntity"."id" + LEFT JOIN "users" "a641d58cf46d4a391ba060ac4dc337665c69ffea" ON "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" = "AlbumEntity__AlbumEntity_albumUsers"."usersId" AND ( - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" IS NULL + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" IS NULL ) LEFT JOIN "shared_links" "AlbumEntity__AlbumEntity_sharedLinks" ON "AlbumEntity__AlbumEntity_sharedLinks"."albumId" = "AlbumEntity"."id" WHERE @@ -112,35 +112,35 @@ SELECT "AlbumEntity__AlbumEntity_owner"."memoriesEnabled" AS "AlbumEntity__AlbumEntity_owner_memoriesEnabled", "AlbumEntity__AlbumEntity_owner"."quotaSizeInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaSizeInBytes", "AlbumEntity__AlbumEntity_owner"."quotaUsageInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaUsageInBytes", - "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" AS "AlbumEntity__AlbumEntity_sharedUsers_albumsId", - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" AS "AlbumEntity__AlbumEntity_sharedUsers_usersId", - "AlbumEntity__AlbumEntity_sharedUsers"."role" AS "AlbumEntity__AlbumEntity_sharedUsers_role", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_id", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."name" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_name", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."avatarColor" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_avatarColor", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."isAdmin" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_isAdmin", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."email" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_email", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."storageLabel" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_storageLabel", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."oauthId" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_oauthId", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."profileImagePath" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_profileImagePath", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."shouldChangePassword" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_shouldChangePassword", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."createdAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_createdAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_deletedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."status" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_status", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."updatedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_updatedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."memoriesEnabled" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_memoriesEnabled", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaSizeInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaSizeInBytes", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaUsageInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaUsageInBytes" + "AlbumEntity__AlbumEntity_albumUsers"."albumsId" AS "AlbumEntity__AlbumEntity_albumUsers_albumsId", + "AlbumEntity__AlbumEntity_albumUsers"."usersId" AS "AlbumEntity__AlbumEntity_albumUsers_usersId", + "AlbumEntity__AlbumEntity_albumUsers"."role" AS "AlbumEntity__AlbumEntity_albumUsers_role", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_id", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."name" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_name", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."avatarColor" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_avatarColor", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."isAdmin" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_isAdmin", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."email" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_email", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."storageLabel" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_storageLabel", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."oauthId" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_oauthId", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."profileImagePath" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_profileImagePath", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."shouldChangePassword" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_shouldChangePassword", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."createdAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_createdAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_deletedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."status" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_status", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."updatedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_updatedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."memoriesEnabled" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_memoriesEnabled", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaSizeInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaSizeInBytes", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaUsageInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaUsageInBytes" FROM "albums" "AlbumEntity" LEFT JOIN "users" "AlbumEntity__AlbumEntity_owner" ON "AlbumEntity__AlbumEntity_owner"."id" = "AlbumEntity"."ownerId" AND ( "AlbumEntity__AlbumEntity_owner"."deletedAt" IS NULL ) - LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_sharedUsers" ON "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" = "AlbumEntity"."id" - LEFT JOIN "users" "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a" ON "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" = "AlbumEntity__AlbumEntity_sharedUsers"."usersId" + LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_albumUsers" ON "AlbumEntity__AlbumEntity_albumUsers"."albumsId" = "AlbumEntity"."id" + LEFT JOIN "users" "a641d58cf46d4a391ba060ac4dc337665c69ffea" ON "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" = "AlbumEntity__AlbumEntity_albumUsers"."usersId" AND ( - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" IS NULL + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" IS NULL ) WHERE ((("AlbumEntity"."id" IN ($1)))) @@ -174,35 +174,35 @@ SELECT "AlbumEntity__AlbumEntity_owner"."memoriesEnabled" AS "AlbumEntity__AlbumEntity_owner_memoriesEnabled", "AlbumEntity__AlbumEntity_owner"."quotaSizeInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaSizeInBytes", "AlbumEntity__AlbumEntity_owner"."quotaUsageInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaUsageInBytes", - "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" AS "AlbumEntity__AlbumEntity_sharedUsers_albumsId", - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" AS "AlbumEntity__AlbumEntity_sharedUsers_usersId", - "AlbumEntity__AlbumEntity_sharedUsers"."role" AS "AlbumEntity__AlbumEntity_sharedUsers_role", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_id", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."name" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_name", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."avatarColor" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_avatarColor", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."isAdmin" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_isAdmin", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."email" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_email", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."storageLabel" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_storageLabel", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."oauthId" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_oauthId", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."profileImagePath" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_profileImagePath", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."shouldChangePassword" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_shouldChangePassword", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."createdAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_createdAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_deletedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."status" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_status", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."updatedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_updatedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."memoriesEnabled" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_memoriesEnabled", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaSizeInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaSizeInBytes", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaUsageInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaUsageInBytes" + "AlbumEntity__AlbumEntity_albumUsers"."albumsId" AS "AlbumEntity__AlbumEntity_albumUsers_albumsId", + "AlbumEntity__AlbumEntity_albumUsers"."usersId" AS "AlbumEntity__AlbumEntity_albumUsers_usersId", + "AlbumEntity__AlbumEntity_albumUsers"."role" AS "AlbumEntity__AlbumEntity_albumUsers_role", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_id", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."name" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_name", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."avatarColor" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_avatarColor", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."isAdmin" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_isAdmin", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."email" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_email", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."storageLabel" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_storageLabel", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."oauthId" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_oauthId", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."profileImagePath" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_profileImagePath", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."shouldChangePassword" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_shouldChangePassword", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."createdAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_createdAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_deletedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."status" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_status", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."updatedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_updatedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."memoriesEnabled" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_memoriesEnabled", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaSizeInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaSizeInBytes", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaUsageInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaUsageInBytes" FROM "albums" "AlbumEntity" LEFT JOIN "users" "AlbumEntity__AlbumEntity_owner" ON "AlbumEntity__AlbumEntity_owner"."id" = "AlbumEntity"."ownerId" AND ( "AlbumEntity__AlbumEntity_owner"."deletedAt" IS NULL ) - LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_sharedUsers" ON "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" = "AlbumEntity"."id" - LEFT JOIN "users" "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a" ON "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" = "AlbumEntity__AlbumEntity_sharedUsers"."usersId" + LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_albumUsers" ON "AlbumEntity__AlbumEntity_albumUsers"."albumsId" = "AlbumEntity"."id" + LEFT JOIN "users" "a641d58cf46d4a391ba060ac4dc337665c69ffea" ON "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" = "AlbumEntity__AlbumEntity_albumUsers"."usersId" AND ( - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" IS NULL + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" IS NULL ) LEFT JOIN "albums_assets_assets" "AlbumEntity_AlbumEntity__AlbumEntity_assets" ON "AlbumEntity_AlbumEntity__AlbumEntity_assets"."albumsId" = "AlbumEntity"."id" LEFT JOIN "assets" "AlbumEntity__AlbumEntity_assets" ON "AlbumEntity__AlbumEntity_assets"."id" = "AlbumEntity_AlbumEntity__AlbumEntity_assets"."assetsId" @@ -223,7 +223,7 @@ WHERE ( ( ( - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" = $3 + "AlbumEntity__AlbumEntity_albumUsers"."usersId" = $3 ) ) ) @@ -294,25 +294,25 @@ SELECT "AlbumEntity"."albumThumbnailAssetId" AS "AlbumEntity_albumThumbnailAssetId", "AlbumEntity"."isActivityEnabled" AS "AlbumEntity_isActivityEnabled", "AlbumEntity"."order" AS "AlbumEntity_order", - "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" AS "AlbumEntity__AlbumEntity_sharedUsers_albumsId", - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" AS "AlbumEntity__AlbumEntity_sharedUsers_usersId", - "AlbumEntity__AlbumEntity_sharedUsers"."role" AS "AlbumEntity__AlbumEntity_sharedUsers_role", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_id", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."name" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_name", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."avatarColor" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_avatarColor", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."isAdmin" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_isAdmin", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."email" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_email", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."storageLabel" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_storageLabel", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."oauthId" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_oauthId", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."profileImagePath" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_profileImagePath", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."shouldChangePassword" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_shouldChangePassword", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."createdAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_createdAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_deletedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."status" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_status", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."updatedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_updatedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."memoriesEnabled" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_memoriesEnabled", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaSizeInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaSizeInBytes", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaUsageInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaUsageInBytes", + "AlbumEntity__AlbumEntity_albumUsers"."albumsId" AS "AlbumEntity__AlbumEntity_albumUsers_albumsId", + "AlbumEntity__AlbumEntity_albumUsers"."usersId" AS "AlbumEntity__AlbumEntity_albumUsers_usersId", + "AlbumEntity__AlbumEntity_albumUsers"."role" AS "AlbumEntity__AlbumEntity_albumUsers_role", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_id", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."name" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_name", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."avatarColor" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_avatarColor", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."isAdmin" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_isAdmin", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."email" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_email", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."storageLabel" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_storageLabel", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."oauthId" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_oauthId", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."profileImagePath" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_profileImagePath", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."shouldChangePassword" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_shouldChangePassword", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."createdAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_createdAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_deletedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."status" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_status", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."updatedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_updatedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."memoriesEnabled" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_memoriesEnabled", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaSizeInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaSizeInBytes", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaUsageInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaUsageInBytes", "AlbumEntity__AlbumEntity_sharedLinks"."id" AS "AlbumEntity__AlbumEntity_sharedLinks_id", "AlbumEntity__AlbumEntity_sharedLinks"."description" AS "AlbumEntity__AlbumEntity_sharedLinks_description", "AlbumEntity__AlbumEntity_sharedLinks"."password" AS "AlbumEntity__AlbumEntity_sharedLinks_password", @@ -343,10 +343,10 @@ SELECT "AlbumEntity__AlbumEntity_owner"."quotaUsageInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaUsageInBytes" FROM "albums" "AlbumEntity" - LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_sharedUsers" ON "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" = "AlbumEntity"."id" - LEFT JOIN "users" "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a" ON "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" = "AlbumEntity__AlbumEntity_sharedUsers"."usersId" + LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_albumUsers" ON "AlbumEntity__AlbumEntity_albumUsers"."albumsId" = "AlbumEntity"."id" + LEFT JOIN "users" "a641d58cf46d4a391ba060ac4dc337665c69ffea" ON "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" = "AlbumEntity__AlbumEntity_albumUsers"."usersId" AND ( - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" IS NULL + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" IS NULL ) LEFT JOIN "shared_links" "AlbumEntity__AlbumEntity_sharedLinks" ON "AlbumEntity__AlbumEntity_sharedLinks"."albumId" = "AlbumEntity"."id" LEFT JOIN "users" "AlbumEntity__AlbumEntity_owner" ON "AlbumEntity__AlbumEntity_owner"."id" = "AlbumEntity"."ownerId" @@ -371,25 +371,25 @@ SELECT "AlbumEntity"."albumThumbnailAssetId" AS "AlbumEntity_albumThumbnailAssetId", "AlbumEntity"."isActivityEnabled" AS "AlbumEntity_isActivityEnabled", "AlbumEntity"."order" AS "AlbumEntity_order", - "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" AS "AlbumEntity__AlbumEntity_sharedUsers_albumsId", - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" AS "AlbumEntity__AlbumEntity_sharedUsers_usersId", - "AlbumEntity__AlbumEntity_sharedUsers"."role" AS "AlbumEntity__AlbumEntity_sharedUsers_role", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_id", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."name" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_name", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."avatarColor" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_avatarColor", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."isAdmin" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_isAdmin", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."email" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_email", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."storageLabel" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_storageLabel", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."oauthId" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_oauthId", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."profileImagePath" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_profileImagePath", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."shouldChangePassword" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_shouldChangePassword", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."createdAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_createdAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_deletedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."status" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_status", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."updatedAt" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_updatedAt", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."memoriesEnabled" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_memoriesEnabled", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaSizeInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaSizeInBytes", - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."quotaUsageInBytes" AS "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a_quotaUsageInBytes", + "AlbumEntity__AlbumEntity_albumUsers"."albumsId" AS "AlbumEntity__AlbumEntity_albumUsers_albumsId", + "AlbumEntity__AlbumEntity_albumUsers"."usersId" AS "AlbumEntity__AlbumEntity_albumUsers_usersId", + "AlbumEntity__AlbumEntity_albumUsers"."role" AS "AlbumEntity__AlbumEntity_albumUsers_role", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_id", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."name" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_name", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."avatarColor" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_avatarColor", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."isAdmin" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_isAdmin", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."email" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_email", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."storageLabel" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_storageLabel", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."oauthId" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_oauthId", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."profileImagePath" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_profileImagePath", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."shouldChangePassword" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_shouldChangePassword", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."createdAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_createdAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_deletedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."status" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_status", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."updatedAt" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_updatedAt", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."memoriesEnabled" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_memoriesEnabled", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaSizeInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaSizeInBytes", + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."quotaUsageInBytes" AS "a641d58cf46d4a391ba060ac4dc337665c69ffea_quotaUsageInBytes", "AlbumEntity__AlbumEntity_sharedLinks"."id" AS "AlbumEntity__AlbumEntity_sharedLinks_id", "AlbumEntity__AlbumEntity_sharedLinks"."description" AS "AlbumEntity__AlbumEntity_sharedLinks_description", "AlbumEntity__AlbumEntity_sharedLinks"."password" AS "AlbumEntity__AlbumEntity_sharedLinks_password", @@ -420,10 +420,10 @@ SELECT "AlbumEntity__AlbumEntity_owner"."quotaUsageInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaUsageInBytes" FROM "albums" "AlbumEntity" - LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_sharedUsers" ON "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" = "AlbumEntity"."id" - LEFT JOIN "users" "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a" ON "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."id" = "AlbumEntity__AlbumEntity_sharedUsers"."usersId" + LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_albumUsers" ON "AlbumEntity__AlbumEntity_albumUsers"."albumsId" = "AlbumEntity"."id" + LEFT JOIN "users" "a641d58cf46d4a391ba060ac4dc337665c69ffea" ON "a641d58cf46d4a391ba060ac4dc337665c69ffea"."id" = "AlbumEntity__AlbumEntity_albumUsers"."usersId" AND ( - "c20102de0f4f51a0efbaca481ef9bb2f99dd7c0a"."deletedAt" IS NULL + "a641d58cf46d4a391ba060ac4dc337665c69ffea"."deletedAt" IS NULL ) LEFT JOIN "shared_links" "AlbumEntity__AlbumEntity_sharedLinks" ON "AlbumEntity__AlbumEntity_sharedLinks"."albumId" = "AlbumEntity"."id" LEFT JOIN "users" "AlbumEntity__AlbumEntity_owner" ON "AlbumEntity__AlbumEntity_owner"."id" = "AlbumEntity"."ownerId" @@ -438,7 +438,7 @@ WHERE ( ( ( - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" = $1 + "AlbumEntity__AlbumEntity_albumUsers"."usersId" = $1 ) ) ) @@ -462,7 +462,7 @@ WHERE ( ( NOT ( - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" IS NULL + "AlbumEntity__AlbumEntity_albumUsers"."usersId" IS NULL ) ) ) @@ -487,9 +487,9 @@ SELECT "AlbumEntity"."albumThumbnailAssetId" AS "AlbumEntity_albumThumbnailAssetId", "AlbumEntity"."isActivityEnabled" AS "AlbumEntity_isActivityEnabled", "AlbumEntity"."order" AS "AlbumEntity_order", - "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" AS "AlbumEntity__AlbumEntity_sharedUsers_albumsId", - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" AS "AlbumEntity__AlbumEntity_sharedUsers_usersId", - "AlbumEntity__AlbumEntity_sharedUsers"."role" AS "AlbumEntity__AlbumEntity_sharedUsers_role", + "AlbumEntity__AlbumEntity_albumUsers"."albumsId" AS "AlbumEntity__AlbumEntity_albumUsers_albumsId", + "AlbumEntity__AlbumEntity_albumUsers"."usersId" AS "AlbumEntity__AlbumEntity_albumUsers_usersId", + "AlbumEntity__AlbumEntity_albumUsers"."role" AS "AlbumEntity__AlbumEntity_albumUsers_role", "AlbumEntity__AlbumEntity_sharedLinks"."id" AS "AlbumEntity__AlbumEntity_sharedLinks_id", "AlbumEntity__AlbumEntity_sharedLinks"."description" AS "AlbumEntity__AlbumEntity_sharedLinks_description", "AlbumEntity__AlbumEntity_sharedLinks"."password" AS "AlbumEntity__AlbumEntity_sharedLinks_password", @@ -520,7 +520,7 @@ SELECT "AlbumEntity__AlbumEntity_owner"."quotaUsageInBytes" AS "AlbumEntity__AlbumEntity_owner_quotaUsageInBytes" FROM "albums" "AlbumEntity" - LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_sharedUsers" ON "AlbumEntity__AlbumEntity_sharedUsers"."albumsId" = "AlbumEntity"."id" + LEFT JOIN "albums_shared_users_users" "AlbumEntity__AlbumEntity_albumUsers" ON "AlbumEntity__AlbumEntity_albumUsers"."albumsId" = "AlbumEntity"."id" LEFT JOIN "shared_links" "AlbumEntity__AlbumEntity_sharedLinks" ON "AlbumEntity__AlbumEntity_sharedLinks"."albumId" = "AlbumEntity"."id" LEFT JOIN "users" "AlbumEntity__AlbumEntity_owner" ON "AlbumEntity__AlbumEntity_owner"."id" = "AlbumEntity"."ownerId" AND ( @@ -533,7 +533,7 @@ WHERE AND ( ( ( - "AlbumEntity__AlbumEntity_sharedUsers"."usersId" IS NULL + "AlbumEntity__AlbumEntity_albumUsers"."usersId" IS NULL ) ) ) diff --git a/server/src/repositories/access.repository.ts b/server/src/repositories/access.repository.ts index fab9424c28..07b35c0bb0 100644 --- a/server/src/repositories/access.repository.ts +++ b/server/src/repositories/access.repository.ts @@ -82,13 +82,13 @@ class ActivityAccess implements IActivityAccess { return this.albumRepository .createQueryBuilder('album') .select('album.id') - .leftJoin('album.sharedUsers', 'albumSharedUsers') - .leftJoin('albumSharedUsers.user', 'sharedUsers') + .leftJoin('album.albumUsers', 'album_albumUsers_users') + .leftJoin('album_albumUsers_users.user', 'albumUsers') .where('album.id IN (:...albumIds)', { albumIds: [...albumIds] }) .andWhere('album.isActivityEnabled = true') .andWhere( new Brackets((qb) => { - qb.where('album.ownerId = :userId', { userId }).orWhere('sharedUsers.id = :userId', { userId }); + qb.where('album.ownerId = :userId', { userId }).orWhere('albumUsers.id = :userId', { userId }); }), ) .getMany() @@ -130,10 +130,10 @@ class AlbumAccess implements IAlbumAccess { return this.albumRepository .find({ select: { id: true }, - relations: { sharedUsers: true }, + relations: { albumUsers: true }, where: { id: In([...albumIds]), - sharedUsers: { + albumUsers: { user: { id: userId }, // If editor access is needed we check for it, otherwise both are accepted role: @@ -183,8 +183,8 @@ class AssetAccess implements IAssetAccess { return this.albumRepository .createQueryBuilder('album') .innerJoin('album.assets', 'asset') - .leftJoin('album.sharedUsers', 'albumSharedUsers') - .leftJoin('albumSharedUsers.user', 'sharedUsers') + .leftJoin('album.albumUsers', 'album_albumUsers_users') + .leftJoin('album_albumUsers_users.user', 'albumUsers') .select('asset.id', 'assetId') .addSelect('asset.livePhotoVideoId', 'livePhotoVideoId') .where('array["asset"."id", "asset"."livePhotoVideoId"] && array[:...assetIds]::uuid[]', { @@ -192,7 +192,7 @@ class AssetAccess implements IAssetAccess { }) .andWhere( new Brackets((qb) => { - qb.where('album.ownerId = :userId', { userId }).orWhere('sharedUsers.id = :userId', { userId }); + qb.where('album.ownerId = :userId', { userId }).orWhere('albumUsers.id = :userId', { userId }); }), ) .getRawMany() diff --git a/server/src/repositories/album.repository.ts b/server/src/repositories/album.repository.ts index d6552383aa..352079c001 100644 --- a/server/src/repositories/album.repository.ts +++ b/server/src/repositories/album.repository.ts @@ -23,7 +23,7 @@ export class AlbumRepository implements IAlbumRepository { getById(id: string, options: AlbumInfoOptions): Promise { const relations: FindOptionsRelations = { owner: true, - sharedUsers: { user: true }, + albumUsers: { user: true }, assets: false, sharedLinks: true, }; @@ -52,7 +52,7 @@ export class AlbumRepository implements IAlbumRepository { }, relations: { owner: true, - sharedUsers: { user: true }, + albumUsers: { user: true }, }, }); } @@ -62,9 +62,9 @@ export class AlbumRepository implements IAlbumRepository { return this.repository.find({ where: [ { ownerId, assets: { id: assetId } }, - { sharedUsers: { user: Equal(ownerId) }, assets: { id: assetId } }, + { albumUsers: { user: Equal(ownerId) }, assets: { id: assetId } }, ], - relations: { owner: true, sharedUsers: { user: true } }, + relations: { owner: true, albumUsers: { user: true } }, order: { createdAt: 'DESC' }, }); } @@ -129,7 +129,7 @@ export class AlbumRepository implements IAlbumRepository { @GenerateSql({ params: [DummyValue.UUID] }) getOwned(ownerId: string): Promise { return this.repository.find({ - relations: { sharedUsers: { user: true }, sharedLinks: true, owner: true }, + relations: { albumUsers: { user: true }, sharedLinks: true, owner: true }, where: { ownerId }, order: { createdAt: 'DESC' }, }); @@ -141,11 +141,11 @@ export class AlbumRepository implements IAlbumRepository { @GenerateSql({ params: [DummyValue.UUID] }) getShared(ownerId: string): Promise { return this.repository.find({ - relations: { sharedUsers: { user: true }, sharedLinks: true, owner: true }, + relations: { albumUsers: { user: true }, sharedLinks: true, owner: true }, where: [ - { sharedUsers: { user: Equal(ownerId) } }, + { albumUsers: { user: Equal(ownerId) } }, { sharedLinks: { userId: ownerId } }, - { ownerId, sharedUsers: { user: Not(IsNull()) } }, + { ownerId, albumUsers: { user: Not(IsNull()) } }, ], order: { createdAt: 'DESC' }, }); @@ -157,8 +157,8 @@ export class AlbumRepository implements IAlbumRepository { @GenerateSql({ params: [DummyValue.UUID] }) getNotShared(ownerId: string): Promise { return this.repository.find({ - relations: { sharedUsers: true, sharedLinks: true, owner: true }, - where: { ownerId, sharedUsers: { user: IsNull() }, sharedLinks: { id: IsNull() } }, + relations: { albumUsers: true, sharedLinks: true, owner: true }, + where: { ownerId, albumUsers: { user: IsNull() }, sharedLinks: { id: IsNull() } }, order: { createdAt: 'DESC' }, }); } @@ -282,7 +282,7 @@ export class AlbumRepository implements IAlbumRepository { where: { id }, relations: { owner: true, - sharedUsers: { user: true }, + albumUsers: { user: true }, sharedLinks: true, assets: true, }, diff --git a/server/src/services/album.service.ts b/server/src/services/album.service.ts index 5cc20b24d0..3f0f6e9864 100644 --- a/server/src/services/album.service.ts +++ b/server/src/services/album.service.ts @@ -128,7 +128,7 @@ export class AlbumService { ownerId: auth.user.id, albumName: dto.albumName, description: dto.description, - sharedUsers: dto.sharedWithUserIds?.map((userId) => ({ user: { id: userId } }) as AlbumUserEntity) ?? [], + albumUsers: dto.sharedWithUserIds?.map((userId) => ({ user: { id: userId } }) as AlbumUserEntity) ?? [], assets, albumThumbnailAssetId: assets[0]?.id || null, }); @@ -221,7 +221,7 @@ export class AlbumService { throw new BadRequestException('Cannot be shared with owner'); } - const exists = album.sharedUsers.find(({ user: { id } }) => id === userId); + const exists = album.albumUsers.find(({ user: { id } }) => id === userId); if (exists) { throw new BadRequestException('User already added'); } @@ -231,7 +231,7 @@ export class AlbumService { throw new BadRequestException('User not found'); } - album.sharedUsers.push(await this.albumUserRepository.create({ userId: userId, albumId: id })); + album.albumUsers.push(await this.albumUserRepository.create({ userId: userId, albumId: id })); } return mapAlbumWithoutAssets(album); @@ -248,7 +248,7 @@ export class AlbumService { throw new BadRequestException('Cannot remove album owner'); } - const exists = album.sharedUsers.find(({ user: { id } }) => id === userId); + const exists = album.albumUsers.find(({ user: { id } }) => id === userId); if (!exists) { throw new BadRequestException('Album not shared with user'); } @@ -266,7 +266,7 @@ export class AlbumService { const album = await this.findOrFail(id, { withAssets: false }); - const permission = album.sharedUsers.find(({ user: { id } }) => id === userId); + const permission = album.albumUsers.find(({ user: { id } }) => id === userId); if (!permission) { throw new BadRequestException('Album not shared with user'); } diff --git a/server/test/fixtures/album.stub.ts b/server/test/fixtures/album.stub.ts index 89755d8b34..f6047d522e 100644 --- a/server/test/fixtures/album.stub.ts +++ b/server/test/fixtures/album.stub.ts @@ -18,7 +18,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [], + albumUsers: [], isActivityEnabled: true, order: AssetOrder.DESC, }), @@ -35,7 +35,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [ + albumUsers: [ { user: userStub.user1, album: undefined as unknown as AlbumEntity, @@ -60,7 +60,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [ + albumUsers: [ { user: userStub.user1, album: undefined as unknown as AlbumEntity, @@ -92,7 +92,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [ + albumUsers: [ { user: userStub.admin, album: undefined as unknown as AlbumEntity, @@ -117,7 +117,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [], + albumUsers: [], isActivityEnabled: true, order: AssetOrder.DESC, }), @@ -134,7 +134,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [], + albumUsers: [], isActivityEnabled: true, order: AssetOrder.DESC, }), @@ -151,7 +151,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [], + albumUsers: [], isActivityEnabled: true, order: AssetOrder.DESC, }), @@ -168,7 +168,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [], + albumUsers: [], isActivityEnabled: true, order: AssetOrder.DESC, }), @@ -185,7 +185,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [], + albumUsers: [], isActivityEnabled: true, order: AssetOrder.DESC, }), @@ -202,7 +202,7 @@ export const albumStub = { updatedAt: new Date(), deletedAt: null, sharedLinks: [], - sharedUsers: [], + albumUsers: [], isActivityEnabled: true, order: AssetOrder.DESC, }), diff --git a/server/test/fixtures/shared-link.stub.ts b/server/test/fixtures/shared-link.stub.ts index 44accfd8bd..aa785a2413 100644 --- a/server/test/fixtures/shared-link.stub.ts +++ b/server/test/fixtures/shared-link.stub.ts @@ -187,7 +187,7 @@ export const sharedLinkStub = { deletedAt: null, albumThumbnailAsset: null, albumThumbnailAssetId: null, - sharedUsers: [], + albumUsers: [], sharedLinks: [], isActivityEnabled: true, order: AssetOrder.DESC,