Fix: Enable edit functionality for ride models and timeline events

This commit is contained in:
gpt-engineer-app[bot]
2025-10-19 22:39:01 +00:00
parent a00623d925
commit 84188b94f2

View File

@@ -896,16 +896,37 @@ async function createCompany(supabase: any, data: any, companyType: string): Pro
} }
async function createRideModel(supabase: any, data: any): Promise<string> { async function createRideModel(supabase: any, data: any): Promise<string> {
const sanitizedData = sanitizeDateFields(data); let rideModelId: string;
const filteredData = filterDatabaseFields(sanitizedData, RIDE_MODEL_FIELDS);
const { data: model, error } = await supabase
.from('ride_models')
.insert(filteredData)
.select('id')
.single();
if (error) throw new Error(`Failed to create ride model: ${error.message}`); // Check if this is an edit (has ride_model_id) or a new creation
return model.id; if (data.ride_model_id) {
console.log(`Updating existing ride model ${data.ride_model_id}`);
rideModelId = data.ride_model_id;
delete data.ride_model_id; // Remove ID from update data
const sanitizedData = sanitizeDateFields(data);
const filteredData = filterDatabaseFields(sanitizedData, RIDE_MODEL_FIELDS);
const { error } = await supabase
.from('ride_models')
.update(filteredData)
.eq('id', rideModelId);
if (error) throw new Error(`Failed to update ride model: ${error.message}`);
} else {
console.log('Creating new ride model');
const sanitizedData = sanitizeDateFields(data);
const filteredData = filterDatabaseFields(sanitizedData, RIDE_MODEL_FIELDS);
const { data: model, error } = await supabase
.from('ride_models')
.insert(filteredData)
.select('id')
.single();
if (error) throw new Error(`Failed to create ride model: ${error.message}`);
rideModelId = model.id;
}
return rideModelId;
} }
async function approvePhotos(supabase: any, data: any, submissionItemId: string): Promise<void> { async function approvePhotos(supabase: any, data: any, submissionItemId: string): Promise<void> {
@@ -966,34 +987,71 @@ async function createTimelineEvent(
approvingUserId: string, approvingUserId: string,
submissionId: string submissionId: string
): Promise<string> { ): Promise<string> {
console.log('Creating timeline event'); // Determine if this is an edit based on presence of event_id in data
// Note: Timeline events from frontend use 'id' field, not 'event_id'
const eventId = data.id || data.event_id;
const eventData = { if (eventId) {
entity_id: data.entity_id, console.log(`Updating existing timeline event ${eventId}`);
entity_type: data.entity_type,
event_type: data.event_type, // Prepare update data (exclude ID and audit fields)
event_date: data.event_date, const updateData: any = {
event_date_precision: data.event_date_precision, event_type: data.event_type,
title: data.title, event_date: data.event_date,
description: data.description, event_date_precision: data.event_date_precision,
from_value: data.from_value, title: data.title,
to_value: data.to_value, description: data.description,
from_entity_id: data.from_entity_id, from_value: data.from_value,
to_entity_id: data.to_entity_id, to_value: data.to_value,
from_location_id: data.from_location_id, from_entity_id: data.from_entity_id,
to_location_id: data.to_location_id, to_entity_id: data.to_entity_id,
is_public: true, // All timeline events are public from_location_id: data.from_location_id,
created_by: submitterId, to_location_id: data.to_location_id,
approved_by: approvingUserId, is_public: true,
submission_id: submissionId, };
};
// Remove undefined/null values
Object.keys(updateData).forEach(key =>
updateData[key] === undefined && delete updateData[key]
);
const { data: event, error } = await supabase const { error } = await supabase
.from('entity_timeline_events') .from('entity_timeline_events')
.insert(eventData) .update(updateData)
.select('id') .eq('id', eventId);
.single();
if (error) throw new Error(`Failed to create timeline event: ${error.message}`); if (error) throw new Error(`Failed to update timeline event: ${error.message}`);
return event.id; return eventId;
} else {
console.log('Creating new timeline event');
const eventData = {
entity_id: data.entity_id,
entity_type: data.entity_type,
event_type: data.event_type,
event_date: data.event_date,
event_date_precision: data.event_date_precision,
title: data.title,
description: data.description,
from_value: data.from_value,
to_value: data.to_value,
from_entity_id: data.from_entity_id,
to_entity_id: data.to_entity_id,
from_location_id: data.from_location_id,
to_location_id: data.to_location_id,
is_public: true,
created_by: submitterId,
approved_by: approvingUserId,
submission_id: submissionId,
};
const { data: event, error } = await supabase
.from('entity_timeline_events')
.insert(eventData)
.select('id')
.single();
if (error) throw new Error(`Failed to create timeline event: ${error.message}`);
return event.id;
}
} }