mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 09:11:12 -05:00
Refactor submission items
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user