Fix entity validation and data loading

This commit is contained in:
gpt-engineer-app[bot]
2025-11-05 16:48:14 +00:00
parent 80d823a1b9
commit 11a1ae5f65
6 changed files with 51 additions and 15 deletions

View File

@@ -83,6 +83,10 @@ export function DesignerForm({ onSubmit, onCancel, initialData }: DesignerFormPr
...data,
company_type: 'designer' as const,
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
banner_image_id: undefined,
banner_image_url: undefined,
card_image_id: undefined,
card_image_url: undefined,
};
await onSubmit(formData);

View File

@@ -87,6 +87,10 @@ export function ManufacturerForm({ onSubmit, onCancel, initialData }: Manufactur
...data,
company_type: 'manufacturer' as const,
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
banner_image_id: undefined,
banner_image_url: undefined,
card_image_id: undefined,
card_image_url: undefined,
};
await onSubmit(formData);

View File

@@ -83,6 +83,10 @@ export function OperatorForm({ onSubmit, onCancel, initialData }: OperatorFormPr
...data,
company_type: 'operator' as const,
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
banner_image_id: undefined,
banner_image_url: undefined,
card_image_id: undefined,
card_image_url: undefined,
};
await onSubmit(formData);

View File

@@ -83,6 +83,10 @@ export function PropertyOwnerForm({ onSubmit, onCancel, initialData }: PropertyO
...data,
company_type: 'property_owner' as const,
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
banner_image_id: undefined,
banner_image_url: undefined,
card_image_id: undefined,
card_image_url: undefined,
};
await onSubmit(formData);

View File

@@ -64,10 +64,10 @@ export const parkValidationSchema = z.object({
.nullable()
.or(z.literal(''))
.transform(val => val || undefined),
banner_image_id: z.string().optional(),
banner_image_url: z.string().optional(),
card_image_id: z.string().optional(),
card_image_url: z.string().optional(),
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
images: imageAssignmentSchema,
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
if (!val || val === '') return true;
@@ -258,10 +258,10 @@ export const rideValidationSchema = z.object({
(val) => val === '' || val === null || val === undefined ? undefined : Number(val),
z.number().int().min(0, 'Round trip duration must be positive').max(7200, 'Round trip duration must be less than 2 hours').optional()
),
banner_image_id: z.string().optional(),
banner_image_url: z.string().optional(),
card_image_id: z.string().optional(),
card_image_url: z.string().optional(),
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
images: imageAssignmentSchema,
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
if (!val || val === '') return true;
@@ -294,10 +294,10 @@ export const companyValidationSchema = z.object({
if (!val || val === '') return true;
return z.string().url().safeParse(val).success;
}, 'Invalid URL format'),
banner_image_id: z.string().optional(),
banner_image_url: z.string().optional(),
card_image_id: z.string().optional(),
card_image_url: z.string().optional(),
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
images: imageAssignmentSchema,
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
if (!val || val === '') return true;

View File

@@ -61,6 +61,9 @@ export async function fetchSubmissionItems(submissionId: string): Promise<Submis
*,
park_submission:park_submissions!park_submission_id(*),
ride_submission:ride_submissions!ride_submission_id(*),
company_submission:company_submissions!company_submission_id(*),
ride_model_submission:ride_model_submissions!ride_model_submission_id(*),
timeline_event_submission:timeline_event_submissions!timeline_event_submission_id(*),
photo_submission:photo_submissions!photo_submission_id(
*,
photo_items:photo_submission_items(*)
@@ -82,13 +85,30 @@ export async function fetchSubmissionItems(submissionId: string): Promise<Submis
case 'ride':
item_data = (item as any).ride_submission;
break;
case 'operator':
case 'manufacturer':
case 'designer':
case 'property_owner':
item_data = (item as any).company_submission;
break;
case 'ride_model':
item_data = (item as any).ride_model_submission;
break;
case 'milestone':
case 'timeline_event':
item_data = (item as any).timeline_event_submission;
break;
case 'photo':
case 'photo_edit':
case 'photo_delete':
item_data = {
...(item as any).photo_submission,
photos: (item as any).photo_submission?.photo_items || []
};
break;
default:
// Log warning for unknown types but don't crash
console.warn(`Unknown item_type: ${item.item_type}`);
item_data = null;
}