Fix database migration

This commit is contained in:
gpt-engineer-app[bot]
2025-10-02 19:28:29 +00:00
parent 1a754ae63e
commit f9825eefbb
2 changed files with 27 additions and 4 deletions

View File

@@ -112,7 +112,7 @@ export interface RideModel {
category: 'roller_coaster' | 'flat_ride' | 'water_ride' | 'dark_ride' | 'kiddie_ride' | 'transportation'; category: 'roller_coaster' | 'flat_ride' | 'water_ride' | 'dark_ride' | 'kiddie_ride' | 'transportation';
ride_type: string; ride_type: string;
description?: string; description?: string;
technical_specs?: any; // Legacy JSON field technical_specs?: any; // ⚠️ DEPRECATED - Use ride_model_technical_specifications table instead
technical_specifications?: RideModelTechnicalSpec[]; // New relational data technical_specifications?: RideModelTechnicalSpec[]; // New relational data
} }
@@ -138,9 +138,9 @@ export interface Ride {
max_height_meters?: number; max_height_meters?: number;
length_meters?: number; length_meters?: number;
inversions?: number; inversions?: number;
coaster_stats?: any; // Legacy JSON field coaster_stats?: any; // ⚠️ DEPRECATED - Use ride_coaster_statistics table instead
technical_specs?: any; // Legacy JSON field technical_specs?: any; // ⚠️ DEPRECATED - Use ride_technical_specifications table instead
former_names?: any; // Legacy JSON field former_names?: any; // ⚠️ DEPRECATED - Use ride_name_history table instead
// New relational data // New relational data
technical_specifications?: RideTechnicalSpec[]; technical_specifications?: RideTechnicalSpec[];
coaster_statistics?: RideCoasterStat[]; coaster_statistics?: RideCoasterStat[];

View File

@@ -0,0 +1,23 @@
-- Deprecate legacy JSON columns in rides table
-- These columns violate the architectural rule: "NEVER STORE JSON IN SQL COLUMNS"
-- Use relational tables instead:
-- - ride_technical_specifications (for technical_specs)
-- - ride_coaster_statistics (for coaster_stats)
-- - ride_name_history (for former_names)
-- Mark columns as deprecated with comments
COMMENT ON COLUMN public.rides.technical_specs IS '⚠️ DEPRECATED: Use ride_technical_specifications table instead. This JSON column violates data normalization principles and should not be used for new data.';
COMMENT ON COLUMN public.rides.coaster_stats IS '⚠️ DEPRECATED: Use ride_coaster_statistics table instead. This JSON column violates data normalization principles and should not be used for new data.';
COMMENT ON COLUMN public.rides.former_names IS '⚠️ DEPRECATED: Use ride_name_history table instead. This JSON column violates data normalization principles and should not be used for new data.';
-- Set default to NULL to prevent accidental usage
ALTER TABLE public.rides
ALTER COLUMN technical_specs SET DEFAULT NULL,
ALTER COLUMN coaster_stats SET DEFAULT NULL,
ALTER COLUMN former_names SET DEFAULT NULL;
-- Same for ride_models table
COMMENT ON COLUMN public.ride_models.technical_specs IS '⚠️ DEPRECATED: Use ride_model_technical_specifications table instead. This JSON column violates data normalization principles and should not be used for new data.';
ALTER TABLE public.ride_models
ALTER COLUMN technical_specs SET DEFAULT NULL;