intelidomWebsite/src/routes/admin/(dashboard)/banner/+page.server.ts

36 lines
1.2 KiB
TypeScript

import { fail } from '@sveltejs/kit';
import type { Actions, PageServerLoad } from './$types';
import { saveImage, deleteUpload } from '$lib/server/storage';
import { addBannerImage, deleteBannerImage, listBannerImages, moveBanner } from '$lib/server/content';
export const load: PageServerLoad = () => ({
images: listBannerImages().map((i) => ({ id: i.id, url: `/uploads/${i.imagePath}` }))
});
export const actions: Actions = {
upload: async ({ request }) => {
const form = await request.formData();
const files = form
.getAll('images')
.filter((e): e is File => e instanceof File && e.size > 0);
if (files.length === 0) return fail(400, { error: 'Izberite vsaj eno sliko.' });
for (const file of files) {
addBannerImage(await saveImage('banner', file));
}
return { success: `Naloženih slik: ${files.length}.` };
},
delete: async ({ request }) => {
const form = await request.formData();
const path = deleteBannerImage(String(form.get('id') ?? ''));
if (path) deleteUpload(path);
return { success: 'Slika izbrisana.' };
},
move: async ({ request }) => {
const form = await request.formData();
moveBanner(String(form.get('id') ?? ''), form.get('dir') === 'up' ? 'up' : 'down');
return { success: null };
}
};