0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-01-21 00:52:43 -05:00

feat: hide assets when deleting library

This commit is contained in:
Jonathan Jogenfors 2025-01-16 23:49:18 +01:00
parent 9d8a9d99aa
commit 066916935f
3 changed files with 8 additions and 0 deletions

View file

@ -155,6 +155,7 @@ export interface IAssetRepository {
getAllByDeviceId(userId: string, deviceId: string): Promise<string[]>;
getLivePhotoCount(motionId: string): Promise<number>;
updateAll(ids: string[], options: Updateable<Assets>): Promise<void>;
updateByLibraryId(libraryId: string, options: Updateable<Assets>): Promise<void>;
updateDuplicates(options: AssetUpdateDuplicateOptions): Promise<void>;
update(asset: Updateable<Assets> & { id: string }): Promise<AssetEntity>;
remove(asset: AssetEntity): Promise<void>;

View file

@ -317,6 +317,10 @@ export class AssetRepository implements IAssetRepository {
await this.db.updateTable('assets').set(options).where('id', '=', anyUuid(ids)).execute();
}
async updateByLibraryId(libraryId: string, options: Updateable<Assets>): Promise<void> {
await this.db.updateTable('assets').set(options).where('libraryId', '=', asUuid(libraryId)).execute();
}
@GenerateSql({
params: [{ targetDuplicateId: DummyValue.UUID, duplicateIds: [DummyValue.UUID], assetIds: [DummyValue.UUID] }],
})

View file

@ -335,6 +335,9 @@ export class LibraryService extends BaseService {
async handleDeleteLibrary(job: JobOf<JobName.LIBRARY_DELETE>): Promise<JobStatus> {
const libraryId = job.id;
// Hide all assets in the library before deleting them
await this.assetRepository.updateByLibraryId(libraryId, { deletedAt: new Date() });
const assetPagination = usePagination(JOBS_LIBRARY_PAGINATION_SIZE, (pagination) =>
this.assetRepository.getAll(pagination, { libraryId, withDeleted: true }),
);