import { z } from 'zod' import { requireCampaignAccess, requireStageTwoSafeText, stageTwoApiError, stageTwoDatabase, stageTwoUuid } from '~/server/utils/stage-two-supabase' import { requireStageTwoUser } from '~/server/utils/stage-two-supabase' const PatchBodySchema = z.object({ title: z.string().trim().min(1).max(200), }).strict() export default defineEventHandler(async (event) => { try { const user = await requireStageTwoUser(event) const campaignId = stageTwoUuid(event.context.params?.id ?? '') await requireCampaignAccess(campaignId, user.id, true) const body = PatchBodySchema.parse(await readBody(event)) requireStageTwoSafeText(body.title) const campaigns = await stageTwoDatabase>>(`campaigns?id=eq.${campaignId}&limit=1`, { method: 'PATCH', body: JSON.stringify({ title: body.title, updated_at: new Date().toISOString() }), prefer: 'return=representation', }) if (!campaigns[0]) throw createError({ statusCode: 404, statusMessage: 'Campaign not found.' }) return { campaign: campaigns[0] } } catch (error) { stageTwoApiError(error) } })