vpgen/src/routes/devices/+page.server.ts

28 lines
811 B
TypeScript

import type { Actions } from './$types';
import { createDevice } from '$lib/server/devices';
import { error, fail, redirect } from '@sveltejs/kit';
import wgProvider from '$lib/server/wg-provider';
export const actions = {
create: async (event) => {
if (!event.locals.user) return error(401, 'Unauthorized');
const formData = await event.request.formData();
const name = formData.get('name');
if (typeof name !== 'string' || name.trim() === '') return fail(400, { name, invalid: true });
const res = await createDevice({
name: name.trim(),
user: event.locals.user,
});
switch (res._tag) {
case 'ok': {
return redirect(303, `/devices/${res.value}`);
}
case 'err': {
const [status, message] = res.error;
return error(status, message);
}
}
},
} satisfies Actions;