diff --git a/src/lib/entityTransformers.ts b/src/lib/entityTransformers.ts index e4de7e8e..626f019a 100644 --- a/src/lib/entityTransformers.ts +++ b/src/lib/entityTransformers.ts @@ -163,6 +163,10 @@ export function transformRideModelData(submissionData: RideModelSubmissionData): category: submissionData.category, ride_type: submissionData.ride_type || null, description: submissionData.description || null, + banner_image_url: submissionData.banner_image_url || null, + banner_image_id: submissionData.banner_image_id || null, + card_image_url: submissionData.card_image_url || null, + card_image_id: submissionData.card_image_id || null, }; } diff --git a/src/lib/submissionItemsService.ts b/src/lib/submissionItemsService.ts index fc2d8fcd..10815a80 100644 --- a/src/lib/submissionItemsService.ts +++ b/src/lib/submissionItemsService.ts @@ -667,10 +667,43 @@ async function createRideModel(data: any, dependencyMap: Map): P const { transformRideModelData, validateSubmissionData } = await import('./entityTransformers'); const { ensureUniqueSlug } = await import('./slugUtils'); - // Validate input data - validateSubmissionData(data, 'Ride Model'); + // Check if this is an edit (has ride_model_id) + const isEdit = !!data.ride_model_id; - // Resolve dependencies + if (isEdit) { + // Handle ride model edit + const resolvedData = resolveDependencies(data, dependencyMap); + + // Extract image assignments from ImageAssignments structure + const imageData = extractImageAssignments(resolvedData.images); + + // Update the ride model + const updateData: any = { + name: resolvedData.name, + slug: resolvedData.slug, + category: resolvedData.category, + ride_type: resolvedData.ride_type || null, + description: resolvedData.description || null, + manufacturer_id: resolvedData.manufacturer_id, + ...imageData, + updated_at: new Date().toISOString() + }; + + const { error } = await supabase + .from('ride_models') + .update(updateData) + .eq('id', data.ride_model_id); + + if (error) { + console.error('Error updating ride model:', error); + throw new Error(`Database error: ${error.message}`); + } + + return data.ride_model_id; + } + + // Handle ride model creation + validateSubmissionData(data, 'Ride Model'); const resolvedData = resolveDependencies(data, dependencyMap); // Validate manufacturer_id is present (required for ride models) @@ -682,8 +715,14 @@ async function createRideModel(data: any, dependencyMap: Map): P const uniqueSlug = await ensureUniqueSlug(resolvedData.slug, 'ride_models'); resolvedData.slug = uniqueSlug; + // Extract image assignments + const imageData = extractImageAssignments(resolvedData.images); + // Transform to database format - const modelData = transformRideModelData(resolvedData); + const modelData = { + ...transformRideModelData(resolvedData), + ...imageData + }; // Insert into database const { data: model, error } = await supabase