mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 08:11:13 -05:00
Fix stale references in seed data
This commit is contained in:
@@ -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']);
|
||||||
|
|||||||
Reference in New Issue
Block a user