Fix stale references in seed data

This commit is contained in:
gpt-engineer-app[bot]
2025-11-03 23:35:40 +00:00
parent 62504da252
commit f979637ba3

View File

@@ -94,6 +94,26 @@ async function registerTestEntity(
} }
} }
// Validate that submission item IDs still exist in the database
async function validateSubmissionItemIds(
supabase: any,
itemIds: string[]
): Promise<string[]> {
if (itemIds.length === 0) return [];
const { data, error } = await supabase
.from('submission_items')
.select('id')
.in('id', itemIds);
if (error) {
edgeLogger.error('Error validating submission item IDs', { error: error.message });
return [];
}
return data ? data.map(item => item.id) : [];
}
async function getExistingTestEntities( async function getExistingTestEntities(
supabase: any, supabase: any,
entityType: string entityType: string
@@ -298,6 +318,81 @@ Deno.serve(async (req) => {
pendingParks.forEach(item => createdSubmissionItems.park.push(item.id)); pendingParks.forEach(item => createdSubmissionItems.park.push(item.id));
pendingRideModels.forEach(item => createdSubmissionItems.ride_model.push(item.id)); pendingRideModels.forEach(item => createdSubmissionItems.ride_model.push(item.id));
// Validate all loaded submission item IDs to remove stale references
const allManufacturerIds = [...createdSubmissionItems.manufacturer];
const validManufacturerIds = await validateSubmissionItemIds(supabase, allManufacturerIds);
createdSubmissionItems.manufacturer = validManufacturerIds;
const allOperatorIds = [...createdSubmissionItems.operator];
const validOperatorIds = await validateSubmissionItemIds(supabase, allOperatorIds);
createdSubmissionItems.operator = validOperatorIds;
const allOwnerIds = [...createdSubmissionItems.property_owner];
const validOwnerIds = await validateSubmissionItemIds(supabase, allOwnerIds);
createdSubmissionItems.property_owner = validOwnerIds;
const allDesignerIds = [...createdSubmissionItems.designer];
const validDesignerIds = await validateSubmissionItemIds(supabase, allDesignerIds);
createdSubmissionItems.designer = validDesignerIds;
const allParkIds = [...createdSubmissionItems.park];
const validParkIds = await validateSubmissionItemIds(supabase, allParkIds);
createdSubmissionItems.park = validParkIds;
const allRideModelIds = [...createdSubmissionItems.ride_model];
const validRideModelIds = await validateSubmissionItemIds(supabase, allRideModelIds);
createdSubmissionItems.ride_model = validRideModelIds;
// Log if stale IDs were found
if (allManufacturerIds.length !== validManufacturerIds.length) {
edgeLogger.warn('Removed stale manufacturer submission items', {
requestId: tracking.requestId,
total: allManufacturerIds.length,
valid: validManufacturerIds.length,
removed: allManufacturerIds.length - validManufacturerIds.length
});
}
if (allOperatorIds.length !== validOperatorIds.length) {
edgeLogger.warn('Removed stale operator submission items', {
requestId: tracking.requestId,
total: allOperatorIds.length,
valid: validOperatorIds.length,
removed: allOperatorIds.length - validOperatorIds.length
});
}
if (allOwnerIds.length !== validOwnerIds.length) {
edgeLogger.warn('Removed stale property_owner submission items', {
requestId: tracking.requestId,
total: allOwnerIds.length,
valid: validOwnerIds.length,
removed: allOwnerIds.length - validOwnerIds.length
});
}
if (allDesignerIds.length !== validDesignerIds.length) {
edgeLogger.warn('Removed stale designer submission items', {
requestId: tracking.requestId,
total: allDesignerIds.length,
valid: validDesignerIds.length,
removed: allDesignerIds.length - validDesignerIds.length
});
}
if (allParkIds.length !== validParkIds.length) {
edgeLogger.warn('Removed stale park submission items', {
requestId: tracking.requestId,
total: allParkIds.length,
valid: validParkIds.length,
removed: allParkIds.length - validParkIds.length
});
}
if (allRideModelIds.length !== validRideModelIds.length) {
edgeLogger.warn('Removed stale ride_model submission items', {
requestId: tracking.requestId,
total: allRideModelIds.length,
valid: validRideModelIds.length,
removed: allRideModelIds.length - validRideModelIds.length
});
}
// Get slugs from pending parks for ride generation // Get slugs from pending parks for ride generation
for (const item of pendingParks) { for (const item of pendingParks) {
const slug = await getSubmissionSlug(supabase, 'park', item.item_data_id); const slug = await getSubmissionSlug(supabase, 'park', item.item_data_id);
@@ -759,13 +854,23 @@ Deno.serve(async (req) => {
for (let i = 0; i < plan.rideModels; i++) { for (let i = 0; i < plan.rideModels; i++) {
const level = getPopulationLevel(fieldDensity, i); const level = getPopulationLevel(fieldDensity, i);
// Ensure we have valid manufacturer submission items
if (createdSubmissionItems.manufacturer.length === 0) {
edgeLogger.error('No valid manufacturers available for ride model', {
requestId: tracking.requestId,
modelIndex: i
});
continue; // Skip this ride model
}
const { data: mfgData } = await supabase const { data: mfgData } = await supabase
.from('companies') .from('companies')
.select('id') .select('id')
.eq('slug', randomItem(createdCompanies.manufacturer)) .eq('slug', randomItem(createdCompanies.manufacturer))
.maybeSingle(); .maybeSingle();
const mfgItemId = createdSubmissionItems.manufacturer.length > 0 ? randomItem(createdSubmissionItems.manufacturer) : undefined; const mfgItemId = randomItem(createdSubmissionItems.manufacturer);
const category = randomItem(['roller_coaster', 'flat_ride', 'water_ride']); const category = randomItem(['roller_coaster', 'flat_ride', 'water_ride']);
const rideType = randomItem(['spinning', 'launch', 'suspended', 'family', 'standard']); const rideType = randomItem(['spinning', 'launch', 'suspended', 'family', 'standard']);