mirror of
https://github.com/immich-app/immich.git
synced 2025-05-31 12:15:47 -04:00
fix(server): remove stacks on stack.deleteAll (#17288)
* fix(server): delete all stacks on deleteAll * remove unnecessary assets update * generate sql --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
parent
59e5c82569
commit
502854cee1
@ -32,47 +32,7 @@ where
|
|||||||
"asset_stack"."ownerId" = $1
|
"asset_stack"."ownerId" = $1
|
||||||
|
|
||||||
-- StackRepository.delete
|
-- StackRepository.delete
|
||||||
select
|
delete from "asset_stack"
|
||||||
*,
|
|
||||||
(
|
|
||||||
select
|
|
||||||
coalesce(json_agg(agg), '[]')
|
|
||||||
from
|
|
||||||
(
|
|
||||||
select
|
|
||||||
"assets".*,
|
|
||||||
(
|
|
||||||
select
|
|
||||||
coalesce(json_agg(agg), '[]')
|
|
||||||
from
|
|
||||||
(
|
|
||||||
select
|
|
||||||
"tags".*
|
|
||||||
from
|
|
||||||
"tags"
|
|
||||||
inner join "tag_asset" on "tags"."id" = "tag_asset"."tagsId"
|
|
||||||
where
|
|
||||||
"tag_asset"."assetsId" = "assets"."id"
|
|
||||||
) as agg
|
|
||||||
) as "tags",
|
|
||||||
to_json("exifInfo") as "exifInfo"
|
|
||||||
from
|
|
||||||
"assets"
|
|
||||||
inner join lateral (
|
|
||||||
select
|
|
||||||
"exif".*
|
|
||||||
from
|
|
||||||
"exif"
|
|
||||||
where
|
|
||||||
"exif"."assetId" = "assets"."id"
|
|
||||||
) as "exifInfo" on true
|
|
||||||
where
|
|
||||||
"assets"."deletedAt" is null
|
|
||||||
and "assets"."stackId" = "asset_stack"."id"
|
|
||||||
) as agg
|
|
||||||
) as "assets"
|
|
||||||
from
|
|
||||||
"asset_stack"
|
|
||||||
where
|
where
|
||||||
"id" = $1::uuid
|
"id" = $1::uuid
|
||||||
|
|
||||||
|
@ -122,38 +122,11 @@ export class StackRepository {
|
|||||||
|
|
||||||
@GenerateSql({ params: [DummyValue.UUID] })
|
@GenerateSql({ params: [DummyValue.UUID] })
|
||||||
async delete(id: string): Promise<void> {
|
async delete(id: string): Promise<void> {
|
||||||
const stack = await this.getById(id);
|
|
||||||
if (!stack) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const assetIds = stack.assets.map(({ id }) => id);
|
|
||||||
|
|
||||||
await this.db.deleteFrom('asset_stack').where('id', '=', asUuid(id)).execute();
|
await this.db.deleteFrom('asset_stack').where('id', '=', asUuid(id)).execute();
|
||||||
await this.db
|
|
||||||
.updateTable('assets')
|
|
||||||
.set({ stackId: null, updatedAt: new Date() })
|
|
||||||
.where('id', 'in', assetIds)
|
|
||||||
.execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteAll(ids: string[]): Promise<void> {
|
async deleteAll(ids: string[]): Promise<void> {
|
||||||
const assetIds = [];
|
await this.db.deleteFrom('asset_stack').where('id', 'in', ids).execute();
|
||||||
for (const id of ids) {
|
|
||||||
const stack = await this.getById(id);
|
|
||||||
if (!stack) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
assetIds.push(...stack.assets.map(({ id }) => id));
|
|
||||||
}
|
|
||||||
|
|
||||||
await this.db
|
|
||||||
.updateTable('assets')
|
|
||||||
.set({ updatedAt: new Date(), stackId: null })
|
|
||||||
.where('id', 'in', assetIds)
|
|
||||||
.where('stackId', 'in', ids)
|
|
||||||
.execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update(id: string, entity: Updateable<StackEntity>): Promise<StackEntity> {
|
update(id: string, entity: Updateable<StackEntity>): Promise<StackEntity> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user