diff --git a/src/integrations/supabase/types.ts b/src/integrations/supabase/types.ts index c1e38ec8..7038f488 100644 --- a/src/integrations/supabase/types.ts +++ b/src/integrations/supabase/types.ts @@ -705,6 +705,54 @@ export type Database = { }, ] } + entity_versions_archive: { + Row: { + change_reason: string | null + change_type: Database["public"]["Enums"]["version_change_type"] + changed_at: string + changed_by: string | null + entity_id: string + entity_type: string + id: string + ip_address_hash: string | null + is_current: boolean + metadata: Json | null + submission_id: string | null + version_data: Json + version_number: number + } + Insert: { + change_reason?: string | null + change_type?: Database["public"]["Enums"]["version_change_type"] + changed_at?: string + changed_by?: string | null + entity_id: string + entity_type: string + id?: string + ip_address_hash?: string | null + is_current?: boolean + metadata?: Json | null + submission_id?: string | null + version_data: Json + version_number: number + } + Update: { + change_reason?: string | null + change_type?: Database["public"]["Enums"]["version_change_type"] + changed_at?: string + changed_by?: string | null + entity_id?: string + entity_type?: string + id?: string + ip_address_hash?: string | null + is_current?: boolean + metadata?: Json | null + submission_id?: string | null + version_data?: Json + version_number?: number + } + Relationships: [] + } historical_parks: { Row: { closure_reason: string | null diff --git a/supabase/migrations/20251015181349_54c2065b-f677-4df1-b4ec-946d7bbc4e03.sql b/supabase/migrations/20251015181349_54c2065b-f677-4df1-b4ec-946d7bbc4e03.sql new file mode 100644 index 00000000..172d2d63 --- /dev/null +++ b/supabase/migrations/20251015181349_54c2065b-f677-4df1-b4ec-946d7bbc4e03.sql @@ -0,0 +1,27 @@ +-- Archive old JSONB versions table before dropping +-- This preserves historical data while allowing us to move forward + +CREATE TABLE IF NOT EXISTS public.entity_versions_archive ( + LIKE public.entity_versions INCLUDING ALL +); + +-- Copy all old versions to archive +INSERT INTO public.entity_versions_archive +SELECT * FROM public.entity_versions +ON CONFLICT DO NOTHING; + +-- Verify counts match +DO $$ +DECLARE + original_count INTEGER; + archive_count INTEGER; +BEGIN + SELECT COUNT(*) INTO original_count FROM public.entity_versions; + SELECT COUNT(*) INTO archive_count FROM public.entity_versions_archive; + + IF original_count != archive_count THEN + RAISE EXCEPTION 'Archive verification failed: original=%, archive=%', original_count, archive_count; + END IF; + + RAISE NOTICE 'Successfully archived % versions to entity_versions_archive', archive_count; +END $$; \ No newline at end of file