'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 { CreateBookingSchema, CreateGuestSchema, CreateRoomSchema, } from '../../schema/booking.schema'; import { createBookingManagementApi } from '../api'; export const createBooking = authActionClient .inputSchema(CreateBookingSchema) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createBookingManagementApi(client); logger.info({ name: 'booking.create' }, 'Creating booking...'); const result = await api.createBooking(input); logger.info({ name: 'booking.create' }, 'Booking created'); return { success: true, data: result }; }); export const updateBookingStatus = authActionClient .inputSchema( z.object({ bookingId: z.string().uuid(), status: z.string(), }), ) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createBookingManagementApi(client); logger.info({ name: 'booking.updateStatus' }, 'Updating booking status...'); const result = await api.updateBookingStatus(input.bookingId, input.status); logger.info({ name: 'booking.updateStatus' }, 'Booking status updated'); return { success: true, data: result }; }); export const createRoom = authActionClient .inputSchema(CreateRoomSchema) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createBookingManagementApi(client); logger.info({ name: 'booking.createRoom' }, 'Creating room...'); const result = await api.createRoom(input); logger.info({ name: 'booking.createRoom' }, 'Room created'); return { success: true, data: result }; }); export const createGuest = authActionClient .inputSchema(CreateGuestSchema) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const logger = await getLogger(); const api = createBookingManagementApi(client); logger.info({ name: 'booking.createGuest' }, 'Creating guest...'); const result = await api.createGuest(input); logger.info({ name: 'booking.createGuest' }, 'Guest created'); return { success: true, data: result }; });