mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-21 12:11:11 -05:00
feat: Complete Ride Model Image Support
This commit is contained in:
@@ -163,6 +163,10 @@ export function transformRideModelData(submissionData: RideModelSubmissionData):
|
|||||||
category: submissionData.category,
|
category: submissionData.category,
|
||||||
ride_type: submissionData.ride_type || null,
|
ride_type: submissionData.ride_type || null,
|
||||||
description: submissionData.description || 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,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -667,10 +667,43 @@ async function createRideModel(data: any, dependencyMap: Map<string, string>): P
|
|||||||
const { transformRideModelData, validateSubmissionData } = await import('./entityTransformers');
|
const { transformRideModelData, validateSubmissionData } = await import('./entityTransformers');
|
||||||
const { ensureUniqueSlug } = await import('./slugUtils');
|
const { ensureUniqueSlug } = await import('./slugUtils');
|
||||||
|
|
||||||
// Validate input data
|
// Check if this is an edit (has ride_model_id)
|
||||||
validateSubmissionData(data, 'Ride Model');
|
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);
|
const resolvedData = resolveDependencies(data, dependencyMap);
|
||||||
|
|
||||||
// Validate manufacturer_id is present (required for ride models)
|
// Validate manufacturer_id is present (required for ride models)
|
||||||
@@ -682,8 +715,14 @@ async function createRideModel(data: any, dependencyMap: Map<string, string>): P
|
|||||||
const uniqueSlug = await ensureUniqueSlug(resolvedData.slug, 'ride_models');
|
const uniqueSlug = await ensureUniqueSlug(resolvedData.slug, 'ride_models');
|
||||||
resolvedData.slug = uniqueSlug;
|
resolvedData.slug = uniqueSlug;
|
||||||
|
|
||||||
|
// Extract image assignments
|
||||||
|
const imageData = extractImageAssignments(resolvedData.images);
|
||||||
|
|
||||||
// Transform to database format
|
// Transform to database format
|
||||||
const modelData = transformRideModelData(resolvedData);
|
const modelData = {
|
||||||
|
...transformRideModelData(resolvedData),
|
||||||
|
...imageData
|
||||||
|
};
|
||||||
|
|
||||||
// Insert into database
|
// Insert into database
|
||||||
const { data: model, error } = await supabase
|
const { data: model, error } = await supabase
|
||||||
|
|||||||
Reference in New Issue
Block a user