"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fileArraySchema = exports.fileSchema = exports.requiredNumber = exports.requiredString = void 0;
const zod_1 = __importDefault(require("zod"));
const requiredString = (field, isParam) => {
    const reqType = isParam ? 'parâmetro' : 'campo';
    return zod_1.default
        .string(`O ${reqType} ${field} é obrigatório e deve ser é string!`)
        .trim()
        .min(1, `O ${reqType} ${field} é obrigatório`);
};
exports.requiredString = requiredString;
const requiredNumber = (field, isParam) => {
    const reqType = isParam ? 'parâmetro' : 'campo';
    return zod_1.default
        .number(`O ${reqType} ${field} é obrigatório e deve ser number!`)
        .min(1, { error: `O ${reqType} ${field} é obrigatório!` });
};
exports.requiredNumber = requiredNumber;
// export const requiredString = (field: string, isParam?: boolean) => {
//   const reqType = isParam ? 'parâmetro' : 'campo';
//   return z
//     .string({ error: (issue) => issue.input === undefined
//       ? `O ${reqType} ${field} é obrigatório!` 
//       : `O ${reqType} ${field} não é String!`
//     })
//     .trim()
//     .min(1, { error: `O ${reqType} ${field} é obrigatório` });
// };
// export const requiredNumber = (field: string, isParam?: boolean) => {
//   const reqType = isParam ? 'parâmetro' : 'campo';
//   return z
//     .number({ error: (issue) => issue.input === undefined
//       ? `O ${reqType} ${field} é obrigatório!` 
//       : `O ${reqType} ${field} não é number!`
//     })
//     .min(1, { error: `O ${reqType} ${field} é obrigatório!` });
// };
const fileSchema = (field) => zod_1.default.string({
    error: (issue) => {
        if (issue.input === undefined) {
            return `O campo ${field} é obrigatório!`;
        }
        return `O campo ${field} deve ser um ficheiro válido`;
    },
}).openapi({
    type: "string",
    format: "binary",
});
exports.fileSchema = fileSchema;
const fileArraySchema = (field, min = 1) => zod_1.default.array(zod_1.default.string().openapi({
    type: "string",
    format: "binary",
}), {
    error: (issue) => {
        if (issue.input === undefined) {
            return `O campo ${field} é obrigatório!`;
        }
        return `O campo ${field} deve ser um array de ficheiros`;
    },
})
    .min(min, {
    error: `O campo ${field} deve conter pelo menos ${min} ficheiro(s)!`,
});
exports.fileArraySchema = fileArraySchema;
