diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 94f9201..8942480 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -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 }; } };