const ISO_DATE = /^\d{4}-\d{2}-\d{2}$/;

export function hasValidTripDates(startDate: string, endDate: string): boolean {
  return ISO_DATE.test(startDate) && ISO_DATE.test(endDate) && endDate >= startDate;
}

export function requireMutationResult<T>(row: T | null, action: "modification" | "suppression"): T {
  if (!row) throw new Error(`Voyage introuvable ou ${action} non autorisée`);
  return row;
}

export function getTravelerState(travelerId?: string | null, travelerEmail?: string | null, invitationStatus?: string | null) {
  if (travelerId) return "associated" as const;
  if (travelerEmail && invitationStatus === "pending") return "pending" as const;
  if (travelerEmail && invitationStatus === "expired") return "expired" as const;
  if (travelerEmail && invitationStatus === "revoked") return "revoked" as const;
  return "none" as const;
}
