import { z } from "zod";

const idFilter = () => z.array(z.string().max(64)).max(500);
const chapterFilter = () => z.array(z.string().max(100)).max(100);
const countryFilter = () => z.array(z.string().max(8)).max(300);
const dateStr = () => z.string().max(32);

export const TimelineWindowFiltersSchema = z.object({
  startDate: z.coerce.date(),
  endDate: z.coerce.date(),
  resourceIds: idFilter().optional(),
  projectIds: idFilter().optional(),
  clientIds: idFilter().optional(),
  chapters: chapterFilter().optional(),
  eids: idFilter().optional(),
  countryCodes: countryFilter().optional(),
});

export const TimelineDetailFiltersSchema = z.object({
  startDate: dateStr().optional(),
  endDate: dateStr().optional(),
  durationDays: z.number().int().min(1).max(366).optional(),
  resourceIds: idFilter().optional(),
  projectIds: idFilter().optional(),
  clientIds: idFilter().optional(),
  chapters: chapterFilter().optional(),
  eids: idFilter().optional(),
  countryCodes: countryFilter().optional(),
});

export const TimelineProjectContextDetailSchema = z.object({
  projectId: z.string().max(64),
  startDate: dateStr().optional(),
  endDate: dateStr().optional(),
  durationDays: z.number().int().min(1).max(366).optional(),
});

export const TimelineProjectIdSchema = z.object({
  projectId: z.string().max(64),
});
