feat(03-04): add deleteImage form action
- Delete image files from filesystem (original + thumbnail) - Delete image record from database - Continue database deletion even if file deletion fails - Returns success after cleanup
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
import type { PageServerLoad, Actions } from './$types';
|
||||
import { fail } from '@sveltejs/kit';
|
||||
import { entryRepository, imageRepository } from '$lib/server/db/repository';
|
||||
import { saveOriginal, saveThumbnail, ensureDirectories } from '$lib/server/images/storage';
|
||||
import {
|
||||
saveOriginal,
|
||||
saveThumbnail,
|
||||
ensureDirectories,
|
||||
deleteImage as deleteImageFile
|
||||
} from '$lib/server/images/storage';
|
||||
import { generateThumbnail } from '$lib/server/images/thumbnails';
|
||||
|
||||
export const load: PageServerLoad = async ({ url }) => {
|
||||
@@ -188,5 +193,33 @@ export const actions: Actions = {
|
||||
console.error('Upload error:', err);
|
||||
return fail(500, { error: 'Failed to save image' });
|
||||
}
|
||||
},
|
||||
|
||||
deleteImage: async ({ request }) => {
|
||||
const formData = await request.formData();
|
||||
const imageId = formData.get('imageId')?.toString();
|
||||
|
||||
if (!imageId) {
|
||||
return fail(400, { error: 'Image ID required' });
|
||||
}
|
||||
|
||||
// Get image to find extension for file deletion
|
||||
const image = imageRepository.getById(imageId);
|
||||
if (!image) {
|
||||
return fail(404, { error: 'Image not found' });
|
||||
}
|
||||
|
||||
// Delete files from filesystem
|
||||
try {
|
||||
await deleteImageFile(imageId, image.ext);
|
||||
} catch (err) {
|
||||
console.error('Failed to delete image files:', err);
|
||||
// Continue to delete from database even if files missing
|
||||
}
|
||||
|
||||
// Delete from database
|
||||
imageRepository.delete(imageId);
|
||||
|
||||
return { success: true };
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user