38 lines
1.2 KiB
TypeScript
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 };
|
|
}),
|
|
};
|