import { z } from "zod";

const positiveId = z.coerce.number().int().positive();
const slug = z
  .string()
  .trim()
  .toLowerCase()
  .min(1)
  .max(140)
  .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);

export const bannerIdParamSchema = z.object({
  id: positiveId,
});

export const bannerListQuerySchema = z.object({
  q: z.string().trim().max(100).optional(),
  page: z.coerce.number().int().min(1).default(1),
  perPage: z.coerce.number().int().min(1).max(100).default(20),
  includeInactive: z.coerce.boolean().optional(),
});

export const createBannerSchema = z.object({
  title: z.string().trim().min(2).max(255),
  subtitle: z.string().trim().max(255).optional().default(""),
  imageUrl: z.string().trim().min(1).max(512),
  linkUrl: z.string().trim().max(512).optional().default(""),
  linkLabel: z.string().trim().max(120).optional().default(""),
  isActive: z.boolean().default(true),
  sortOrder: z.coerce.number().int().min(0).default(0),
});

export const updateBannerSchema = createBannerSchema
  .partial()
  .refine(
    (value) => Object.keys(value).length > 0,
    "At least one field is required",
  );
