-- Remove Polygon Configuration Migration -- ==================================== -- This migration removes all Polygon-related configurations and references -- from the Foxhunt HFT Trading System in preparation for dual-provider setup. -- -- Prerequisites: Migration 009_dual_provider_configuration.sql must be applied first -- Result: Clean removal of all Polygon references, system ready for Databento+Benzinga -- === REMOVE POLYGON CONFIGURATION ENTRIES === -- Remove any existing Polygon configuration settings DELETE FROM config_settings WHERE config_key ILIKE '%polygon%' OR description ILIKE '%polygon%' OR category_path ILIKE '%polygon%'; -- Remove any existing Polygon categories DELETE FROM config_categories WHERE category_name ILIKE '%polygon%' OR description ILIKE '%polygon%' OR category_path ILIKE '%polygon%'; -- Remove any Polygon-related subscriptions DELETE FROM config_subscriptions WHERE config_pattern ILIKE '%polygon%' OR category_pattern ILIKE '%polygon%' OR service_name ILIKE '%polygon%'; -- === REMOVE POLYGON PROVIDER TABLES (IF THEY EXIST) === -- Drop Polygon-specific tables if they exist DROP TABLE IF EXISTS polygon_configurations CASCADE; DROP TABLE IF EXISTS polygon_subscriptions CASCADE; DROP TABLE IF EXISTS polygon_endpoints CASCADE; DROP TABLE IF EXISTS polygon_api_keys CASCADE; -- === REMOVE POLYGON-RELATED FUNCTIONS === -- Drop any Polygon-specific functions DROP FUNCTION IF EXISTS get_polygon_config(VARCHAR, VARCHAR) CASCADE; DROP FUNCTION IF EXISTS set_polygon_config(VARCHAR, JSONB, VARCHAR) CASCADE; DROP FUNCTION IF EXISTS notify_polygon_changes() CASCADE; -- === REMOVE POLYGON-RELATED TRIGGERS === -- Clean up any Polygon-related triggers that might exist DROP TRIGGER IF EXISTS polygon_config_notify ON config_settings; DROP TRIGGER IF EXISTS polygon_provider_notify ON provider_configurations; -- === VERIFY PREREQUISITES === -- Ensure dual-provider tables exist (from migration 009) DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'provider_configurations') THEN RAISE EXCEPTION 'Migration 009_dual_provider_configuration.sql must be applied first. provider_configurations table missing.'; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'provider_subscriptions') THEN RAISE EXCEPTION 'Migration 009_dual_provider_configuration.sql must be applied first. provider_subscriptions table missing.'; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'provider_endpoints') THEN RAISE EXCEPTION 'Migration 009_dual_provider_configuration.sql must be applied first. provider_endpoints table missing.'; END IF; END $$; -- === AUDIT LOG FOR REMOVAL === -- Log the removal in config_history for audit purposes INSERT INTO config_history ( config_setting_id, config_key, category_path, environment, old_value, new_value, change_type, changed_by, change_reason ) VALUES ( NULL, 'polygon_cleanup', 'system.migration', 'all', '{"provider": "polygon", "status": "active"}'::jsonb, '{"provider": "polygon", "status": "removed"}'::jsonb, 'delete', 'migration_010', 'Migration to dual-provider setup - Polygon provider removed in favor of Databento + Benzinga' ); -- === UPDATE DOCUMENTATION === -- Add migration note to config_categories INSERT INTO config_categories ( category_name, parent_id, category_path, description, is_system, display_order, metadata ) VALUES ( 'migration_notes', (SELECT id FROM config_categories WHERE category_path = 'system'), 'system.migration_notes', 'Migration history and notes', true, 999, '{"migration_010": "Removed Polygon provider configurations for dual-provider setup"}'::jsonb ); -- === CLEANUP ORPHANED DATA === -- Remove any orphaned config_history entries that reference non-existent settings DELETE FROM config_history WHERE config_setting_id IS NOT NULL AND config_setting_id NOT IN (SELECT id FROM config_settings); -- Remove any orphaned config_environment_overrides DELETE FROM config_environment_overrides WHERE config_setting_id NOT IN (SELECT id FROM config_settings); -- Remove any orphaned config_locks DELETE FROM config_locks WHERE config_key NOT IN (SELECT config_key FROM config_settings); -- === UPDATE STATISTICS === ANALYZE config_categories; ANALYZE config_settings; ANALYZE config_history; ANALYZE config_environment_overrides; ANALYZE config_subscriptions; ANALYZE config_locks; ANALYZE provider_configurations; ANALYZE provider_subscriptions; ANALYZE provider_endpoints; -- === VERIFY DATABENTO/BENZINGA CONFIGS EXIST === -- Verify that Databento and Benzinga configurations are properly set up DO $$ DECLARE databento_count INTEGER; benzinga_count INTEGER; BEGIN -- Check Databento configurations SELECT COUNT(*) INTO databento_count FROM config_settings WHERE category_path LIKE 'trading.providers.databento%'; IF databento_count = 0 THEN RAISE WARNING 'No Databento configurations found. Run migration 009 if not already applied.'; ELSE RAISE NOTICE 'Found % Databento configuration(s)', databento_count; END IF; -- Check Benzinga configurations SELECT COUNT(*) INTO benzinga_count FROM config_settings WHERE category_path LIKE 'trading.providers.benzinga%'; IF benzinga_count = 0 THEN RAISE WARNING 'No Benzinga configurations found. Run migration 009 if not already applied.'; ELSE RAISE NOTICE 'Found % Benzinga configuration(s)', benzinga_count; END IF; -- Verify no Polygon configs remain IF EXISTS ( SELECT 1 FROM config_settings WHERE config_key ILIKE '%polygon%' OR description ILIKE '%polygon%' OR category_path ILIKE '%polygon%' ) THEN RAISE WARNING 'Some Polygon configurations may still exist in the system'; ELSE RAISE NOTICE 'All Polygon configurations have been successfully removed'; END IF; END $$; -- === MIGRATION COMPLETION SUMMARY === -- Polygon configuration cleanup completed successfully! -- -- REMOVED: -- - All Polygon-related configuration settings -- - Polygon configuration categories -- - Polygon subscription patterns -- - Polygon-specific database tables and functions -- - Polygon-related triggers and notifications -- - Orphaned configuration data -- -- ADDED: -- - Prerequisites verification (ensures migration 009 was applied) -- - Audit log entry for the removal -- - Migration notes category for documentation -- - Data integrity cleanup -- - Post-migration verification checks -- -- RESULT: -- The system is now ready for the dual-provider setup with Databento and Benzinga. -- No Polygon-related configurations or references remain in the database. -- All provider configurations should be managed through the new provider_* tables. -- -- NEXT STEPS: -- 1. Verify services can connect to Databento and Benzinga APIs -- 2. Update API keys in provider_configurations table -- 3. Test configuration hot-reload functionality -- 4. Monitor 'foxhunt_provider_changes' PostgreSQL notification channel