'use server'; import { z } from 'zod'; import { authActionClient } from '@kit/next/safe-action'; import { getLogger } from '@kit/shared/logger'; import { getSupabaseServerClient } from '@kit/supabase/server-client'; import { CreateEventSchema, UpdateEventSchema, EventRegistrationSchema, CreateHolidayPassSchema, } from '../../schema/event.schema'; import { createEventManagementApi } from '../api'; export const createEvent = authActionClient .inputSchema(CreateEventSchema) .action(async ({ parsedInput: input, ctx: _ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createEventManagementApi(client); logger.info({ name: 'event.create' }, 'Creating event...'); const result = await api.createEvent(input); logger.info({ name: 'event.create' }, 'Event created'); return { success: true, data: result }; }); export const updateEvent = authActionClient .inputSchema(UpdateEventSchema) .action(async ({ parsedInput: input, ctx: _ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createEventManagementApi(client); logger.info({ name: 'event.update' }, 'Updating event...'); const result = await api.updateEvent(input); logger.info({ name: 'event.update' }, 'Event updated'); return { success: true, data: result }; }); export const deleteEvent = authActionClient .inputSchema(z.object({ eventId: z.string().uuid() })) .action(async ({ parsedInput: input, ctx: _ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createEventManagementApi(client); logger.info({ name: 'event.delete' }, 'Cancelling event...'); await api.deleteEvent(input.eventId); logger.info({ name: 'event.delete' }, 'Event cancelled'); return { success: true }; }); export const registerForEvent = authActionClient .inputSchema(EventRegistrationSchema) .action(async ({ parsedInput: input, ctx: _ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createEventManagementApi(client); logger.info({ name: 'event.register' }, 'Registering for event...'); const result = await api.registerForEvent(input); logger.info({ name: 'event.register' }, 'Registered for event'); return { success: true, data: result }; }); export const createHolidayPass = authActionClient .inputSchema(CreateHolidayPassSchema) .action(async ({ parsedInput: input, ctx: _ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createEventManagementApi(client); logger.info( { name: 'event.createHolidayPass' }, 'Creating holiday pass...', ); const result = await api.createHolidayPass(input); logger.info({ name: 'event.createHolidayPass' }, 'Holiday pass created'); return { success: true, data: result }; });