server/lib/validation.js Repository wynajem_motorowek Original path server/lib/validation.jsRole SOURCE Size 1142 bytes Lines 37 SHA-256 4c57c4c826429cd6f479c8a6b86d07d903f6d3bfe9fa4129a5bf2c20ef53cf48Displayed range 1–37 Previous file/page · Project index · Next file/page
const { DAY_START_MIN, DAY_END_MIN, parseDateKey, parseTimeToMinutes } = require("./time");
function validationError(message, reason = "VALIDATION_ERROR") {
const err = new Error(message);
err.status = 400;
err.reason = reason;
return err;
}
function validateRangeInput({ date, start, end }) {
if (!parseDateKey(date)) {
throw validationError("Invalid date format, expected YYYY-MM-DD");
}
const startMin = parseTimeToMinutes(start);
const endMin = parseTimeToMinutes(end);
if (startMin === null || endMin === null) {
throw validationError("Invalid time format, expected HH:MM");
}
if (startMin < DAY_START_MIN || endMin > DAY_END_MIN) {
throw validationError("Time must be in 08:00-20:00 range", "OUTSIDE_WORKING_HOURS");
}
if (endMin <= startMin) {
throw validationError("End time must be greater than start time", "INVALID_RANGE");
}
if (endMin - startMin > 12 * 60) {
throw validationError("Maximum reservation length is 12 hours", "TOO_LONG");
}
return { startMin, endMin };
}
module.exports = {
validateRangeInput,
validationError,
};