templates2.Booking.Nuxt/server/api/admin/services/[id].patch.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

21 lines
1 KiB
TypeScript

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