HotTRDealsBackend/validators/common.js
2026-01-25 17:50:56 +00:00

41 lines
1.0 KiB
JavaScript

const { z } = require("zod")
const normalizeStringValue = (value) => {
if (value === undefined || value === null) return null
if (typeof value !== "string") return value
const trimmed = value.trim()
return trimmed === "" ? null : trimmed
}
const optionalTrimmedString = () =>
z.preprocess((value) => normalizeStringValue(value), z.string().or(z.null()))
const optionalUrlString = () =>
z.preprocess(
(value) => {
const normalized = normalizeStringValue(value)
return normalized === null ? null : normalized
},
z.string().url().or(z.null())
)
const optionalPrice = () =>
z.preprocess(
(value) => {
if (value === undefined || value === null) return null
if (typeof value === "string") {
const normalized = value.replace(",", ".").trim()
return normalized === "" ? null : Number(normalized)
}
return value
},
z.number().nonnegative().or(z.null())
)
module.exports = {
normalizeStringValue,
optionalTrimmedString,
optionalUrlString,
optionalPrice,
}