From 68ca57e7121e7a9ce152647dcdfbb5d15949bc14 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 17:21:39 +0000 Subject: [PATCH] Fix ride status constraint violation --- src/components/admin/RideForm.tsx | 37 ++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/components/admin/RideForm.tsx b/src/components/admin/RideForm.tsx index e9778f82..f2651f26 100644 --- a/src/components/admin/RideForm.tsx +++ b/src/components/admin/RideForm.tsx @@ -135,6 +135,25 @@ const intensityLevels = [ 'extreme' ]; +// Status value mappings between display (form) and database values +const STATUS_DISPLAY_TO_DB: Record = { + 'Operating': 'operating', + 'Seasonal': 'operating', + 'Closed Temporarily': 'maintenance', + 'Closed Permanently': 'closed', + 'Under Construction': 'under_construction', + 'Planned': 'under_construction', + 'SBNO': 'sbno' +}; + +const STATUS_DB_TO_DISPLAY: Record = { + 'operating': 'Operating', + 'closed': 'Closed Permanently', + 'under_construction': 'Under Construction', + 'maintenance': 'Closed Temporarily', + 'sbno': 'SBNO' +}; + export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: RideFormProps) { const { isModerator } = useUserRole(); const [submitting, setSubmitting] = useState(false); @@ -174,7 +193,9 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: description: initialData?.description || '', category: initialData?.category || '', ride_sub_type: initialData?.ride_sub_type || '', - status: initialData?.status || 'Operating', + status: initialData?.status + ? STATUS_DB_TO_DISPLAY[initialData.status] || 'Operating' + : 'Operating', opening_date: initialData?.opening_date || '', closing_date: initialData?.closing_date || '', // Convert metric values to user's preferred unit for display @@ -216,10 +237,14 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: const handleFormSubmit = async (data: RideFormData) => { setSubmitting(true); try { + // Transform status from display value to DB value + const dbStatus = STATUS_DISPLAY_TO_DB[data.status] || 'operating'; + // Convert form values back to metric for storage const metricData = { ...data, - height_requirement: data.height_requirement + status: dbStatus, + height_requirement: data.height_requirement ? convertHeightToMetric(data.height_requirement, measurementSystem) : undefined, max_speed_kmh: data.max_speed_kmh @@ -361,7 +386,13 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
- setValue('status', value)} + defaultValue={initialData?.status + ? STATUS_DB_TO_DISPLAY[initialData.status] || 'Operating' + : 'Operating' + } + >