import type { Actions } from "./$types"; import { fail, redirect } from "@sveltejs/kit"; import { message, superValidate } from "sveltekit-superforms"; import { zod } from "sveltekit-superforms/adapters"; import { ZRoomNew, ZUrlEntityId } from "$lib/shared/model/validation"; import { trpc } from "$lib/shared/trpc"; import { loadWrap } from "$lib/shared/util"; export const actions: Actions = { default: async (event) => loadWrap(async () => { const id = ZUrlEntityId.parse(event.params.id); const formData = await event.request.formData(); const form = await superValidate(formData, zod(ZRoomNew)); const hide = formData.get("hide"); const del = formData.get("delete"); if (hide) { const hidden = Boolean(parseInt(hide.toString())); await trpc(event).room.hide.mutate({ id, hidden }); return message(form, "Zimmer " + (hidden ? "ausgeblendet" : "eingeblendet")); } else if (del) { await trpc(event).room.delete.mutate(id); redirect(302, "/rooms"); } else { if (!form.valid) { return fail(400, { form }); } await trpc(event).room.update.mutate({ id, room: form.data, }); } return { form }; }), };