mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 06:51:12 -05:00
66 lines
3.0 KiB
SQL
66 lines
3.0 KiB
SQL
|
|
-- ============================================================================
|
|
-- COMPREHENSIVE VERSIONING FIX: Add missing fields to ride_versions
|
|
-- ============================================================================
|
|
|
|
-- Add missing columns from rides table to ride_versions
|
|
ALTER TABLE public.ride_versions
|
|
ADD COLUMN IF NOT EXISTS ride_sub_type TEXT,
|
|
ADD COLUMN IF NOT EXISTS age_requirement INTEGER,
|
|
ADD COLUMN IF NOT EXISTS coaster_type TEXT,
|
|
ADD COLUMN IF NOT EXISTS seating_type TEXT,
|
|
ADD COLUMN IF NOT EXISTS intensity_level TEXT,
|
|
ADD COLUMN IF NOT EXISTS image_url TEXT;
|
|
|
|
-- Add comments for new columns
|
|
COMMENT ON COLUMN public.ride_versions.ride_sub_type IS 'Subtype classification within the main category';
|
|
COMMENT ON COLUMN public.ride_versions.age_requirement IS 'Minimum age requirement in years';
|
|
COMMENT ON COLUMN public.ride_versions.coaster_type IS 'Type of roller coaster (e.g., wooden, steel, hybrid)';
|
|
COMMENT ON COLUMN public.ride_versions.seating_type IS 'Type of seating configuration';
|
|
COMMENT ON COLUMN public.ride_versions.intensity_level IS 'Intensity level rating (e.g., mild, moderate, extreme)';
|
|
COMMENT ON COLUMN public.ride_versions.image_url IS 'Primary image URL for the ride';
|
|
|
|
-- ============================================================================
|
|
-- Create ride_former_names relational table (replacing JSONB)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS public.ride_former_names (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
ride_id UUID NOT NULL REFERENCES public.rides(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
used_from DATE,
|
|
used_until DATE,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT now()
|
|
);
|
|
|
|
-- Add indexes for performance
|
|
CREATE INDEX IF NOT EXISTS idx_ride_former_names_ride_id ON public.ride_former_names(ride_id);
|
|
CREATE INDEX IF NOT EXISTS idx_ride_former_names_dates ON public.ride_former_names(used_from, used_until);
|
|
|
|
-- Enable RLS
|
|
ALTER TABLE public.ride_former_names ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Create RLS policies
|
|
CREATE POLICY "Public can view former names"
|
|
ON public.ride_former_names
|
|
FOR SELECT
|
|
USING (true);
|
|
|
|
CREATE POLICY "Moderators can manage former names"
|
|
ON public.ride_former_names
|
|
FOR ALL
|
|
USING (is_moderator(auth.uid()) AND has_aal2());
|
|
|
|
-- Add comments
|
|
COMMENT ON TABLE public.ride_former_names IS 'Historical names for rides - relational replacement for JSONB former_names';
|
|
COMMENT ON COLUMN public.ride_former_names.name IS 'Former name of the ride';
|
|
COMMENT ON COLUMN public.ride_former_names.used_from IS 'Date when this name started being used';
|
|
COMMENT ON COLUMN public.ride_former_names.used_until IS 'Date when this name stopped being used';
|
|
|
|
-- ============================================================================
|
|
-- Remove former_names JSONB column from ride_versions (violates no-JSONB rule)
|
|
-- ============================================================================
|
|
|
|
ALTER TABLE public.ride_versions DROP COLUMN IF EXISTS former_names;
|