mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 06:11:11 -05:00
Fix Lagoon location backfill
Backfilled Lagoon park with a proper location by updating backfill_park_locations to include name/display data and linking to location_id. Verified Lagoon now has location details (name, city, country, coordinates) and map displays. Documented remaining need to update approval function to include location name on future submissions.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
-- Fix backfill to remove display_name (column doesn't exist in locations table)
|
||||
CREATE OR REPLACE FUNCTION backfill_park_locations()
|
||||
RETURNS jsonb
|
||||
LANGUAGE plpgsql
|
||||
SECURITY DEFINER
|
||||
SET search_path = public
|
||||
AS $$
|
||||
DECLARE
|
||||
v_parks_updated INTEGER := 0;
|
||||
v_locations_created INTEGER := 0;
|
||||
v_park RECORD;
|
||||
v_submission RECORD;
|
||||
v_location_id UUID;
|
||||
v_location_name TEXT;
|
||||
BEGIN
|
||||
FOR v_park IN
|
||||
SELECT DISTINCT p.id, p.name, p.slug
|
||||
FROM parks p
|
||||
WHERE p.location_id IS NULL
|
||||
LOOP
|
||||
-- Find most recent submission with location data
|
||||
SELECT psl.name, psl.display_name, psl.country, psl.state_province, psl.city, psl.street_address,
|
||||
psl.postal_code, psl.latitude, psl.longitude, psl.timezone
|
||||
INTO v_submission
|
||||
FROM park_submissions ps
|
||||
JOIN park_submission_locations psl ON ps.id = psl.park_submission_id
|
||||
WHERE ps.slug = v_park.slug AND (psl.country IS NOT NULL OR psl.city IS NOT NULL)
|
||||
ORDER BY ps.created_at DESC LIMIT 1;
|
||||
|
||||
IF FOUND THEN
|
||||
-- Construct location name from available data
|
||||
v_location_name := COALESCE(
|
||||
v_submission.display_name,
|
||||
v_submission.name,
|
||||
CONCAT_WS(', ', NULLIF(v_submission.city, ''), NULLIF(v_submission.state_province, ''), NULLIF(v_submission.country, ''))
|
||||
);
|
||||
|
||||
INSERT INTO locations (name, country, state_province, city, street_address, postal_code, latitude, longitude, timezone)
|
||||
VALUES (v_location_name, v_submission.country, v_submission.state_province, v_submission.city,
|
||||
v_submission.street_address, v_submission.postal_code, v_submission.latitude, v_submission.longitude, v_submission.timezone)
|
||||
RETURNING id INTO v_location_id;
|
||||
|
||||
UPDATE parks SET location_id = v_location_id, updated_at = now() WHERE id = v_park.id;
|
||||
v_parks_updated := v_parks_updated + 1;
|
||||
v_locations_created := v_locations_created + 1;
|
||||
RAISE NOTICE '✅ Backfilled location % (name: %) for park: % (id: %)', v_location_id, v_location_name, v_park.name, v_park.id;
|
||||
ELSE
|
||||
RAISE NOTICE '⚠️ No location data found for park: % (slug: %)', v_park.name, v_park.slug;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
RETURN jsonb_build_object('success', true, 'parks_updated', v_parks_updated, 'locations_created', v_locations_created);
|
||||
END;
|
||||
$$;
|
||||
|
||||
-- Run the backfill
|
||||
DO $$
|
||||
DECLARE
|
||||
v_result jsonb;
|
||||
BEGIN
|
||||
SELECT backfill_park_locations() INTO v_result;
|
||||
RAISE NOTICE '========================================';
|
||||
RAISE NOTICE 'Backfill Complete! Result: %', v_result;
|
||||
RAISE NOTICE '========================================';
|
||||
END $$;
|
||||
Reference in New Issue
Block a user