"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateClientReviewSchema = exports.createClientReviewSchema = exports.clientReviewListQuerySchema = exports.clientReviewIdParamSchema = void 0;
const zod_1 = require("zod");
const positiveId = zod_1.z.coerce.number().int().positive();
exports.clientReviewIdParamSchema = zod_1.z.object({
    id: positiveId,
});
exports.clientReviewListQuerySchema = zod_1.z.object({
    q: zod_1.z.string().trim().min(1).max(255).optional(),
    page: zod_1.z.coerce.number().int().min(1).default(1),
    perPage: zod_1.z.coerce.number().int().min(1).max(100).default(20),
    includeInactive: zod_1.z.preprocess((value) => {
        if (value === undefined)
            return undefined;
        if (typeof value === "boolean")
            return value;
        if (typeof value === "string") {
            if (["true", "1", "yes"].includes(value.toLowerCase()))
                return true;
            if (["false", "0", "no"].includes(value.toLowerCase()))
                return false;
        }
        return value;
    }, zod_1.z.boolean().optional()),
});
const mediaInputSchema = zod_1.z.object({
    url: zod_1.z.string().trim().min(1).max(512),
    storageKey: zod_1.z.string().trim().max(1024).nullable().optional(),
    fileName: zod_1.z.string().trim().max(255).nullable().optional(),
    mimeType: zod_1.z.string().trim().max(120).nullable().optional(),
    sizeBytes: zod_1.z.coerce.number().int().min(0).nullable().optional(),
    altText: zod_1.z.string().trim().max(255).nullable().optional(),
    sortOrder: zod_1.z.coerce.number().int().min(0).default(0),
    isPrimary: zod_1.z.boolean().default(false),
});
exports.createClientReviewSchema = zod_1.z.object({
    clientName: zod_1.z.string().trim().min(1).max(255),
    reviewText: zod_1.z.string().trim().min(1),
    postUrl: zod_1.z.string().trim().url().max(1024).nullable().optional(),
    starRating: zod_1.z.number().int().min(1).max(5).default(5),
    sortOrder: zod_1.z.number().int().min(0).default(0),
    media: zod_1.z.array(mediaInputSchema).default([]),
});
exports.updateClientReviewSchema = zod_1.z
    .object({
    clientName: zod_1.z.string().trim().min(1).max(255).optional(),
    reviewText: zod_1.z.string().trim().min(1).optional(),
    postUrl: zod_1.z.string().trim().url().max(1024).nullable().optional(),
    starRating: zod_1.z.number().int().min(1).max(5).optional(),
    sortOrder: zod_1.z.number().int().min(0).optional(),
    isActive: zod_1.z.boolean().optional(),
    media: zod_1.z.array(mediaInputSchema).optional(),
})
    .refine((value) => Object.keys(value).length > 0, "At least one field is required");
//# sourceMappingURL=clientReviewValidators.js.map