Refactor submission items

This commit is contained in:
gpt-engineer-app[bot]
2025-11-03 03:55:38 +00:00
parent f034ece3a2
commit db8029f573
4 changed files with 147 additions and 16 deletions

View File

@@ -335,10 +335,16 @@ serve(async (req) => {
edgeLogger.info('Processing selective approval', { action: 'approval_start', itemCount: itemIds.length, userId: authenticatedUserId, submissionId });
// Fetch all items for the submission
// Fetch all items with relational data for the submission
const { data: items, error: fetchError } = await supabase
.from('submission_items')
.select('*')
.select(`
*,
park_submission:park_submissions!item_data_id(*),
ride_submission:ride_submissions!item_data_id(*),
company_submission:company_submissions!item_data_id(*),
ride_model_submission:ride_model_submissions!item_data_id(*)
`)
.in('id', itemIds);
if (fetchError) {
@@ -405,8 +411,36 @@ serve(async (req) => {
try {
edgeLogger.info('Processing item', { action: 'approval_process_item', itemId: item.id, itemType: item.item_type });
// Extract data from relational tables based on item_type
let itemData: any;
switch (item.item_type) {
case 'park':
itemData = (item as any).park_submission;
break;
case 'ride':
itemData = (item as any).ride_submission;
break;
case 'manufacturer':
case 'operator':
case 'property_owner':
case 'designer':
itemData = (item as any).company_submission;
break;
case 'ride_model':
itemData = (item as any).ride_model_submission;
break;
default:
// For photo/timeline items, fall back to item_data (these still use JSONB)
itemData = item.item_data;
}
if (!itemData && item.item_data) {
// Fallback to item_data if relational data not found (for backwards compatibility)
itemData = item.item_data;
}
// Validate entity data with strict validation, passing original_data for edits
const validation = validateEntityDataStrict(item.item_type, item.item_data, item.original_data);
const validation = validateEntityDataStrict(item.item_type, itemData, item.original_data);
if (validation.blockingErrors.length > 0) {
edgeLogger.error('Blocking validation errors', {
@@ -467,7 +501,7 @@ serve(async (req) => {
}
// Resolve dependencies in item data
const resolvedData = resolveDependencies(item.item_data, dependencyMap, sortedItems);
const resolvedData = resolveDependencies(itemData, dependencyMap, sortedItems);
// Add submitter ID to the data for photo tracking
resolvedData._submitter_id = submitterId;