feat: Implement composite submission system

This commit is contained in:
gpt-engineer-app[bot]
2025-11-02 19:51:20 +00:00
parent 0f742f36b6
commit 3c6d6a3bdf
5 changed files with 422 additions and 11 deletions

View File

@@ -227,7 +227,7 @@ export async function approveSubmissionItems(
);
}
// Add to dependency map for child items
// Add to dependency map using item.id as key
dependencyMap.set(item.id, entityId);
} catch (error: unknown) {
@@ -898,8 +898,8 @@ async function updateEntityFeaturedImage(
}
/**
* Resolve dependency references in submission data
* Replaces submission item IDs with actual database entity IDs
* Resolve dependency references in item_data by looking up approved entity IDs
* Replaces temporary references (_temp_*_ref) with actual database entity IDs
*/
function resolveDependencies(data: any, dependencyMap: Map<string, string>): any {
const resolved = { ...data };
@@ -915,6 +915,43 @@ function resolveDependencies(data: any, dependencyMap: Map<string, string>): any
'location_id',
];
// Resolve temporary references first
if (resolved._temp_manufacturer_ref !== undefined) {
const refIndex = resolved._temp_manufacturer_ref;
const refItemId = Array.from(dependencyMap.keys())[refIndex];
if (refItemId && dependencyMap.has(refItemId)) {
resolved.manufacturer_id = dependencyMap.get(refItemId);
}
delete resolved._temp_manufacturer_ref;
}
if (resolved._temp_operator_ref !== undefined) {
const refIndex = resolved._temp_operator_ref;
const refItemId = Array.from(dependencyMap.keys())[refIndex];
if (refItemId && dependencyMap.has(refItemId)) {
resolved.operator_id = dependencyMap.get(refItemId);
}
delete resolved._temp_operator_ref;
}
if (resolved._temp_property_owner_ref !== undefined) {
const refIndex = resolved._temp_property_owner_ref;
const refItemId = Array.from(dependencyMap.keys())[refIndex];
if (refItemId && dependencyMap.has(refItemId)) {
resolved.property_owner_id = dependencyMap.get(refItemId);
}
delete resolved._temp_property_owner_ref;
}
if (resolved._temp_ride_model_ref !== undefined) {
const refIndex = resolved._temp_ride_model_ref;
const refItemId = Array.from(dependencyMap.keys())[refIndex];
if (refItemId && dependencyMap.has(refItemId)) {
resolved.ride_model_id = dependencyMap.get(refItemId);
}
delete resolved._temp_ride_model_ref;
}
// Resolve each foreign key if it's a submission item ID
for (const key of foreignKeys) {
if (resolved[key] && dependencyMap.has(resolved[key])) {