diff --git a/migrations/03_safe_columns.sql b/migrations/03_safe_columns.sql new file mode 100644 index 0000000..fc38756 --- /dev/null +++ b/migrations/03_safe_columns.sql @@ -0,0 +1,40 @@ +-- Safe Migration: Only add missing columns and indexes +-- Works with existing schema, won't break on re-run + +-- Add missing columns to posts table if they don't exist +DO $$ +BEGIN + -- Add location column if missing (for geo posts) + IF NOT EXISTS (SELECT 1 FROM information_schema.columns + WHERE table_name = 'posts' AND column_name = 'location') THEN + ALTER TABLE posts ADD COLUMN location GEOGRAPHY(POINT, 4326); + END IF; + + -- Add target_city if missing + IF NOT EXISTS (SELECT 1 FROM information_schema.columns + WHERE table_name = 'posts' AND column_name = 'target_city') THEN + ALTER TABLE posts ADD COLUMN target_city VARCHAR(255); + END IF; + + -- Add target_state if missing + IF NOT EXISTS (SELECT 1 FROM information_schema.columns + WHERE table_name = 'posts' AND column_name = 'target_state') THEN + ALTER TABLE posts ADD COLUMN target_state VARCHAR(50); + END IF; + + -- Add generation_data if missing + IF NOT EXISTS (SELECT 1 FROM information_schema.columns + WHERE table_name = 'posts' AND column_name = 'generation_data') THEN + ALTER TABLE posts ADD COLUMN generation_data JSONB DEFAULT '{}'; + END IF; +END $$; + +-- Create indexes only if they don't exist +CREATE INDEX IF NOT EXISTS idx_posts_location ON posts USING GIST (location); + +CREATE INDEX IF NOT EXISTS idx_posts_target_city ON posts (target_city); + +-- Success message +DO $$ BEGIN RAISE NOTICE '✅ Safe migration completed - existing data preserved'; + +END $$; \ No newline at end of file