Files
thrilltrack-explorer/supabase/migrations/20251006182226_6c75308d-dc6d-4942-a793-45ddb48ad7a9.sql
gpt-engineer-app[bot] 63a7877314 Refactor: Approve tool use
2025-10-06 18:24:20 +00:00

53 lines
2.0 KiB
PL/PgSQL

-- Phase 1: Fix existing photo_delete submissions with missing entity_name
-- Create a function to backfill missing entity names for photo_delete submissions
CREATE OR REPLACE FUNCTION backfill_photo_delete_entity_names()
RETURNS void
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path TO 'public'
AS $$
DECLARE
item_record RECORD;
entity_name_value TEXT;
BEGIN
-- Find all photo_delete submission_items missing entity_name
FOR item_record IN
SELECT id, item_data
FROM submission_items
WHERE item_type = 'photo_delete'
AND item_data->>'entity_name' IS NULL
AND item_data->>'entity_id' IS NOT NULL
AND item_data->>'entity_type' IS NOT NULL
LOOP
-- Fetch entity name based on entity_type
CASE item_record.item_data->>'entity_type'
WHEN 'park' THEN
SELECT name INTO entity_name_value FROM parks WHERE id = (item_record.item_data->>'entity_id')::uuid;
WHEN 'ride' THEN
SELECT name INTO entity_name_value FROM rides WHERE id = (item_record.item_data->>'entity_id')::uuid;
WHEN 'ride_model' THEN
SELECT name INTO entity_name_value FROM ride_models WHERE id = (item_record.item_data->>'entity_id')::uuid;
WHEN 'manufacturer', 'operator', 'designer', 'property_owner' THEN
SELECT name INTO entity_name_value FROM companies WHERE id = (item_record.item_data->>'entity_id')::uuid;
ELSE
entity_name_value := NULL;
END CASE;
-- Update the item_data if we found a name
IF entity_name_value IS NOT NULL THEN
UPDATE submission_items
SET item_data = item_data || jsonb_build_object('entity_name', entity_name_value)
WHERE id = item_record.id;
RAISE NOTICE 'Updated submission_item % with entity_name: %', item_record.id, entity_name_value;
END IF;
END LOOP;
END;
$$;
-- Run the backfill function
SELECT backfill_photo_delete_entity_names();
-- Drop the function after use (optional, but keeps things clean)
DROP FUNCTION IF EXISTS backfill_photo_delete_entity_names();