import { z } from 'zod';

export const createMenuItemSchema = z.object({
  branch_id: z.string().uuid().optional().nullable(),
  category_id: z.string().uuid().optional().nullable(),
  name: z.string().min(1, 'Item name is required'),
  description: z.string().optional().nullable(),
  price: z.number().nonnegative().optional(),
  modifiers: z.array(z.any()).optional(),
  dietary_tags: z.array(z.string()).optional(),
  image_url: z.string().optional().nullable(),
  is_available: z.boolean().optional(),
  sort_order: z.number().int().nonnegative().optional(),
  spice_level: z.number().int().min(0).max(3).optional(),
  is_veg: z.boolean().optional(),
  prep_time_minutes: z.number().int().nonnegative().optional(),
  calories: z.number().int().nonnegative().optional(),
});

export const updateMenuItemSchema = z.object({
  category_id: z.string().uuid().optional().nullable(),
  name: z.string().min(1).optional(),
  description: z.string().optional().nullable(),
  price: z.number().nonnegative().optional(),
  modifiers: z.array(z.any()).optional(),
  dietary_tags: z.array(z.string()).optional(),
  image_url: z.string().optional().nullable(),
  is_available: z.boolean().optional(),
  sort_order: z.number().int().nonnegative().optional(),
  spice_level: z.number().int().min(0).max(3).optional(),
  is_veg: z.boolean().optional(),
  prep_time_minutes: z.number().int().nonnegative().optional(),
  calories: z.number().int().nonnegative().optional(),
});

export const createCategorySchema = z.object({
  branch_id: z.string().uuid().optional().nullable(),
  name: z.string().min(1, 'Category name is required'),
  display_order: z.number().int().nonnegative().optional(),
  is_active: z.boolean().optional(),
});

export const updateCategorySchema = z.object({
  name: z.string().min(1).optional(),
  display_order: z.number().int().nonnegative().optional(),
  is_active: z.boolean().optional(),
});

export type CreateMenuItemInput = z.infer<typeof createMenuItemSchema>;
export type UpdateMenuItemInput = z.infer<typeof updateMenuItemSchema>;
export type CreateCategoryInput = z.infer<typeof createCategorySchema>;
export type UpdateCategoryInput = z.infer<typeof updateCategorySchema>;
