Visitenbuch/src/routes/(app)/room/[id]/+page.server.ts

38 lines
1.2 KiB
TypeScript

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 };
}),
};