Fix date field handling in forms and edge function

This commit is contained in:
gpt-engineer-app[bot]
2025-10-02 16:27:13 +00:00
parent 90b5b943d3
commit ae84732326
3 changed files with 27 additions and 10 deletions

View File

@@ -262,7 +262,7 @@ export function ParkForm({ onSubmit, onCancel, initialData, isEditing = false }:
<Label>Opening Date</Label> <Label>Opening Date</Label>
<DatePicker <DatePicker
date={watch('opening_date') ? new Date(watch('opening_date')) : undefined} date={watch('opening_date') ? new Date(watch('opening_date')) : undefined}
onSelect={(date) => setValue('opening_date', date ? date.toISOString().split('T')[0] : '')} onSelect={(date) => setValue('opening_date', date ? date.toISOString().split('T')[0] : undefined)}
placeholder="Select opening date" placeholder="Select opening date"
disableFuture={true} disableFuture={true}
fromYear={1800} fromYear={1800}
@@ -273,7 +273,7 @@ export function ParkForm({ onSubmit, onCancel, initialData, isEditing = false }:
<Label>Closing Date (if applicable)</Label> <Label>Closing Date (if applicable)</Label>
<DatePicker <DatePicker
date={watch('closing_date') ? new Date(watch('closing_date')) : undefined} date={watch('closing_date') ? new Date(watch('closing_date')) : undefined}
onSelect={(date) => setValue('closing_date', date ? date.toISOString().split('T')[0] : '')} onSelect={(date) => setValue('closing_date', date ? date.toISOString().split('T')[0] : undefined)}
placeholder="Select closing date" placeholder="Select closing date"
disablePast={false} disablePast={false}
fromYear={1800} fromYear={1800}

View File

@@ -523,7 +523,7 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
<Label>Opening Date</Label> <Label>Opening Date</Label>
<DatePicker <DatePicker
date={watch('opening_date') ? new Date(watch('opening_date')) : undefined} date={watch('opening_date') ? new Date(watch('opening_date')) : undefined}
onSelect={(date) => setValue('opening_date', date ? date.toISOString().split('T')[0] : '')} onSelect={(date) => setValue('opening_date', date ? date.toISOString().split('T')[0] : undefined)}
placeholder="Select opening date" placeholder="Select opening date"
disableFuture={true} disableFuture={true}
fromYear={1800} fromYear={1800}
@@ -534,7 +534,7 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
<Label>Closing Date (if applicable)</Label> <Label>Closing Date (if applicable)</Label>
<DatePicker <DatePicker
date={watch('closing_date') ? new Date(watch('closing_date')) : undefined} date={watch('closing_date') ? new Date(watch('closing_date')) : undefined}
onSelect={(date) => setValue('closing_date', date ? date.toISOString().split('T')[0] : '')} onSelect={(date) => setValue('closing_date', date ? date.toISOString().split('T')[0] : undefined)}
placeholder="Select closing date" placeholder="Select closing date"
disablePast={false} disablePast={false}
fromYear={1800} fromYear={1800}

View File

@@ -196,6 +196,19 @@ function resolveDependencies(data: any, dependencyMap: Map<string, string>): any
return resolved; return resolved;
} }
function sanitizeDateFields(data: any): any {
const dateFields = ['opening_date', 'closing_date', 'date_changed', 'date_taken', 'visit_date'];
const sanitized = { ...data };
for (const field of dateFields) {
if (field in sanitized && sanitized[field] === '') {
sanitized[field] = null;
}
}
return sanitized;
}
async function createPark(supabase: any, data: any): Promise<string> { async function createPark(supabase: any, data: any): Promise<string> {
// Transform images object if present // Transform images object if present
if (data.images) { if (data.images) {
@@ -225,18 +238,20 @@ async function createPark(supabase: any, data: any): Promise<string> {
const parkId = data.park_id; const parkId = data.park_id;
delete data.park_id; // Remove ID from update data delete data.park_id; // Remove ID from update data
const sanitizedData = sanitizeDateFields(data);
const { error } = await supabase const { error } = await supabase
.from('parks') .from('parks')
.update(data) .update(sanitizedData)
.eq('id', parkId); .eq('id', parkId);
if (error) throw new Error(`Failed to update park: ${error.message}`); if (error) throw new Error(`Failed to update park: ${error.message}`);
return parkId; return parkId;
} else { } else {
console.log('Creating new park'); console.log('Creating new park');
const sanitizedData = sanitizeDateFields(data);
const { data: park, error } = await supabase const { data: park, error } = await supabase
.from('parks') .from('parks')
.insert(data) .insert(sanitizedData)
.select('id') .select('id')
.single(); .single();
@@ -274,18 +289,20 @@ async function createRide(supabase: any, data: any): Promise<string> {
const rideId = data.ride_id; const rideId = data.ride_id;
delete data.ride_id; // Remove ID from update data delete data.ride_id; // Remove ID from update data
const sanitizedData = sanitizeDateFields(data);
const { error } = await supabase const { error } = await supabase
.from('rides') .from('rides')
.update(data) .update(sanitizedData)
.eq('id', rideId); .eq('id', rideId);
if (error) throw new Error(`Failed to update ride: ${error.message}`); if (error) throw new Error(`Failed to update ride: ${error.message}`);
return rideId; return rideId;
} else { } else {
console.log('Creating new ride'); console.log('Creating new ride');
const sanitizedData = sanitizeDateFields(data);
const { data: ride, error } = await supabase const { data: ride, error } = await supabase
.from('rides') .from('rides')
.insert(data) .insert(sanitizedData)
.select('id') .select('id')
.single(); .single();
@@ -322,7 +339,7 @@ async function createCompany(supabase: any, data: any, companyType: string): Pro
if (companyId) { if (companyId) {
console.log(`Updating existing company ${companyId}`); console.log(`Updating existing company ${companyId}`);
const updateData = { ...data, company_type: companyType }; const updateData = sanitizeDateFields({ ...data, company_type: companyType });
delete updateData.company_id; delete updateData.company_id;
delete updateData.id; // Remove ID from update data delete updateData.id; // Remove ID from update data
@@ -335,7 +352,7 @@ async function createCompany(supabase: any, data: any, companyType: string): Pro
return companyId; return companyId;
} else { } else {
console.log('Creating new company'); console.log('Creating new company');
const companyData = { ...data, company_type: companyType }; const companyData = sanitizeDateFields({ ...data, company_type: companyType });
const { data: company, error } = await supabase const { data: company, error } = await supabase
.from('companies') .from('companies')
.insert(companyData) .insert(companyData)