templates2.Booking.Nuxt/server/api/admin/services/index.post.ts
w4c-templates 3491e2d39c
Some checks failed
CI / quality (push) Has been cancelled
chore(template): publish Booking.Nuxt
2026-10-11 23:27:22 +03:00

19 lines
913 B
TypeScript

import { requireStaff } from '../../../utils/guard';
import { createService, serviceSchema } from '../../../utils/booking';
import { recordAudit } from '../../../utils/audit';
export default defineEventHandler(async (event) => {
const admin = await requireStaff(event);
const parsed = serviceSchema.safeParse(await readBody(event).catch(() => ({})));
if (!parsed.success) throw createError({ statusCode: 400, statusMessage: 'Invalid service.' });
try {
const service = await createService(parsed.data);
await recordAudit({ actorId: admin.id, action: 'service.created', target: service.id, meta: { slug: service.slug } });
setResponseStatus(event, 201);
return { service: { id: service.id, slug: service.slug } };
} catch (e) {
if ((e as { code?: string }).code === 'P2002') throw createError({ statusCode: 409, statusMessage: 'That slug is already in use.' });
throw e;
}
});