import { z } from 'zod';

export const createBookingSchema = z.object({
  startTime: z.string().datetime(),
  guestName: z.string().min(1).max(255),
  guestEmail: z.string().email(),
  guestTimezone: z.string().min(1),
  customAnswers: z.record(z.string()).optional(),
});

/** Single host-by-UUID book API. eventTypeId optional if the host has exactly one active event type. */
export const createHostByIdBookingSchema = createBookingSchema.extend({
  eventTypeId: z.string().uuid().optional(),
});

export const cancelBookingSchema = z.object({
  token: z.string().min(1),
});

export const hostCancelSchema = z.object({
  reason: z.string().optional(),
});

export const rescheduleSchema = z.object({
  startTime: z.string().datetime(),
});

export const listBookingsQuerySchema = z.object({
  status: z.enum(['pending', 'confirmed', 'cancelled', 'failed']).optional(),
  from: z.string().optional(),
  to: z.string().optional(),
  page: z.coerce.number().int().min(1).default(1),
  limit: z.coerce.number().int().min(1).max(100).default(20),
});
