| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import {
- isInvalidIsoDateRange,
- isValidIsoDateYmd,
- } from "@/lib/frontend/search/dateRange";
- /**
- * Centralized validation for search date filters (ISO YYYY-MM-DD).
- *
- * Returns a small, UI-agnostic error descriptor (or null).
- *
- * Notes:
- * - from === to is valid (single-day search)
- * - from > to is invalid
- *
- * @param {string|null} from
- * @param {string|null} to
- * @returns {{code: string, message: string, details?: any} | null}
- */
- export function getSearchDateRangeValidation(from, to) {
- if (from && !isValidIsoDateYmd(from)) {
- return {
- code: "VALIDATION_SEARCH_DATE",
- message: "Invalid from date",
- details: { from },
- };
- }
- if (to && !isValidIsoDateYmd(to)) {
- return {
- code: "VALIDATION_SEARCH_DATE",
- message: "Invalid to date",
- details: { to },
- };
- }
- if (isInvalidIsoDateRange(from, to)) {
- return {
- code: "VALIDATION_SEARCH_RANGE",
- message: "Invalid date range",
- details: { from, to },
- };
- }
- return null;
- }
|