import { z } from "zod";

const vehicleColorKeys = [
  "visau-orange",
  "visau-pink",
  "visau-violet",
  "visau-charcoal",
  "visau-indigo",
  "visau-sky",
  "visau-teal",
  "visau-mint",
  "visau-green",
] as const;

const vehicleKinds = ["passenger", "delivery"] as const;

export const createVehicleSchema = z.object({
  body: z.object({
    name: z.string().min(1),
    plateNumber: z.string().trim().optional(),
    colorKey: z.enum(vehicleColorKeys).default("visau-indigo"),
    vehicleKind: z.enum(vehicleKinds).default("passenger"),
    deviceId: z.string().uuid().optional(),
    userIds: z.array(z.string().uuid()).default([]),
  }),
  query: z.object({}).default({}),
  params: z.object({}).default({}),
});

export const updateVehicleSchema = z.object({
  body: z.object({
    name: z.string().min(1),
    plateNumber: z.string().trim().nullable().optional(),
    colorKey: z.enum(vehicleColorKeys),
    vehicleKind: z.enum(vehicleKinds),
  }),
  query: z.object({}).default({}),
  params: z.object({
    id: z.string().uuid(),
  }),
});

export const deleteVehicleSchema = z.object({
  body: z.object({}).default({}),
  query: z.object({}).default({}),
  params: z.object({
    id: z.string().uuid(),
  }),
});

export const historyQuerySchema = z.object({
  body: z.object({}).default({}),
  params: z.object({
    id: z.string().uuid(),
  }),
  query: z.object({
    from: z.string().datetime().optional(),
    to: z.string().datetime().optional(),
    limit: z.coerce.number().min(1).max(5000).default(1000),
  }),
});
