- Integrate config ID type fixes (TEXT → UUID) - Integrate connected_accounts, session_account_associations, account_sync_items - Integrate bot hierarchy (parent_bot_id, enabled_tabs_json, inherit_parent_config) - Integrate email_monitors, folder_monitors, folder_change_events, email_received_events - Integrate user_organizations table - Remove separate 6.1.1, 6.1.2, 6.1.3 migration folders - Maximum version remains 6.1.0 per project standards
248 lines
8.9 KiB
SQL
248 lines
8.9 KiB
SQL
-- Rollback Migration: 6.1.0 Enterprise Features
|
|
-- WARNING: This will delete all enterprise feature data!
|
|
-- NOTE: TABLES AND INDEXES ONLY - No views, triggers, or functions per project standards
|
|
-- Includes rollback for: config ID fixes, connected accounts, bot hierarchy, monitors
|
|
|
|
-- ============================================================================
|
|
-- ROLLBACK: Bot Hierarchy and Monitors (from 6.1.3)
|
|
-- ============================================================================
|
|
|
|
-- Drop comments first
|
|
COMMENT ON TABLE public.user_organizations IS NULL;
|
|
COMMENT ON TABLE public.email_received_events IS NULL;
|
|
COMMENT ON TABLE public.folder_change_events IS NULL;
|
|
COMMENT ON TABLE public.folder_monitors IS NULL;
|
|
COMMENT ON TABLE public.email_monitors IS NULL;
|
|
COMMENT ON COLUMN public.bots.inherit_parent_config IS NULL;
|
|
COMMENT ON COLUMN public.bots.enabled_tabs_json IS NULL;
|
|
COMMENT ON COLUMN public.bots.parent_bot_id IS NULL;
|
|
COMMENT ON TABLE public.system_automations IS NULL;
|
|
|
|
-- Drop user organizations table
|
|
DROP INDEX IF EXISTS idx_user_orgs_default;
|
|
DROP INDEX IF EXISTS idx_user_orgs_org;
|
|
DROP INDEX IF EXISTS idx_user_orgs_user;
|
|
DROP TABLE IF EXISTS public.user_organizations;
|
|
|
|
-- Drop email received events table
|
|
DROP INDEX IF EXISTS idx_email_events_received;
|
|
DROP INDEX IF EXISTS idx_email_events_processed;
|
|
DROP INDEX IF EXISTS idx_email_events_monitor;
|
|
DROP TABLE IF EXISTS public.email_received_events;
|
|
|
|
-- Drop folder change events table
|
|
DROP INDEX IF EXISTS idx_folder_events_created;
|
|
DROP INDEX IF EXISTS idx_folder_events_processed;
|
|
DROP INDEX IF EXISTS idx_folder_events_monitor;
|
|
DROP TABLE IF EXISTS public.folder_change_events;
|
|
|
|
-- Drop folder monitors table
|
|
DROP INDEX IF EXISTS idx_folder_monitors_account_email;
|
|
DROP INDEX IF EXISTS idx_folder_monitors_active;
|
|
DROP INDEX IF EXISTS idx_folder_monitors_provider;
|
|
DROP INDEX IF EXISTS idx_folder_monitors_bot_id;
|
|
DROP TABLE IF EXISTS public.folder_monitors;
|
|
|
|
-- Drop email monitors table
|
|
DROP INDEX IF EXISTS idx_email_monitors_active;
|
|
DROP INDEX IF EXISTS idx_email_monitors_email;
|
|
DROP INDEX IF EXISTS idx_email_monitors_bot_id;
|
|
DROP TABLE IF EXISTS public.email_monitors;
|
|
|
|
-- Remove bot hierarchy columns
|
|
DROP INDEX IF EXISTS idx_bots_parent_bot_id;
|
|
ALTER TABLE public.bots DROP COLUMN IF EXISTS inherit_parent_config;
|
|
ALTER TABLE public.bots DROP COLUMN IF EXISTS enabled_tabs_json;
|
|
ALTER TABLE public.bots DROP COLUMN IF EXISTS parent_bot_id;
|
|
|
|
-- ============================================================================
|
|
-- ROLLBACK: Connected Accounts (from 6.1.2)
|
|
-- ============================================================================
|
|
|
|
DROP INDEX IF EXISTS idx_account_sync_items_unique;
|
|
DROP INDEX IF EXISTS idx_account_sync_items_embedding;
|
|
DROP INDEX IF EXISTS idx_account_sync_items_date;
|
|
DROP INDEX IF EXISTS idx_account_sync_items_type;
|
|
DROP INDEX IF EXISTS idx_account_sync_items_account;
|
|
DROP TABLE IF EXISTS account_sync_items;
|
|
|
|
DROP INDEX IF EXISTS idx_session_account_assoc_unique;
|
|
DROP INDEX IF EXISTS idx_session_account_assoc_active;
|
|
DROP INDEX IF EXISTS idx_session_account_assoc_account;
|
|
DROP INDEX IF EXISTS idx_session_account_assoc_session;
|
|
DROP TABLE IF EXISTS session_account_associations;
|
|
|
|
DROP INDEX IF EXISTS idx_connected_accounts_bot_email;
|
|
DROP INDEX IF EXISTS idx_connected_accounts_status;
|
|
DROP INDEX IF EXISTS idx_connected_accounts_provider;
|
|
DROP INDEX IF EXISTS idx_connected_accounts_email;
|
|
DROP INDEX IF EXISTS idx_connected_accounts_user_id;
|
|
DROP INDEX IF EXISTS idx_connected_accounts_bot_id;
|
|
DROP TABLE IF EXISTS connected_accounts;
|
|
|
|
-- ============================================================================
|
|
-- ROLLBACK: Config ID Type Fixes (from 6.1.1)
|
|
-- Revert UUID columns back to TEXT
|
|
-- ============================================================================
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'bot_configuration'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE bot_configuration
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'server_configuration'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE server_configuration
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'tenant_configuration'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE tenant_configuration
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'model_configurations'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE model_configurations
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'connection_configurations'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE connection_configurations
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'component_installations'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE component_installations
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'component_logs'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE component_logs
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'gbot_config_sync'
|
|
AND column_name = 'id'
|
|
AND data_type = 'uuid') THEN
|
|
ALTER TABLE gbot_config_sync
|
|
ALTER COLUMN id TYPE TEXT USING id::text;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- ============================================================================
|
|
-- ROLLBACK: Original 6.1.0 Enterprise Features
|
|
-- ============================================================================
|
|
|
|
-- Drop test support tables
|
|
DROP TABLE IF EXISTS test_execution_logs;
|
|
DROP TABLE IF EXISTS test_accounts;
|
|
|
|
-- Drop calendar tables
|
|
DROP TABLE IF EXISTS calendar_shares;
|
|
DROP TABLE IF EXISTS calendar_resource_bookings;
|
|
DROP TABLE IF EXISTS calendar_resources;
|
|
|
|
-- Drop task tables
|
|
DROP TABLE IF EXISTS task_recurrence;
|
|
DROP TABLE IF EXISTS task_time_entries;
|
|
DROP TABLE IF EXISTS task_dependencies;
|
|
|
|
-- Drop collaboration tables
|
|
DROP TABLE IF EXISTS document_presence;
|
|
|
|
-- Drop drive tables
|
|
DROP TABLE IF EXISTS storage_quotas;
|
|
DROP TABLE IF EXISTS file_sync_status;
|
|
DROP TABLE IF EXISTS file_trash;
|
|
DROP TABLE IF EXISTS file_activities;
|
|
DROP TABLE IF EXISTS file_shares;
|
|
DROP TABLE IF EXISTS file_comments;
|
|
DROP TABLE IF EXISTS file_versions;
|
|
|
|
-- Drop meet tables
|
|
DROP TABLE IF EXISTS user_virtual_backgrounds;
|
|
DROP TABLE IF EXISTS meeting_captions;
|
|
DROP TABLE IF EXISTS meeting_waiting_room;
|
|
DROP TABLE IF EXISTS meeting_questions;
|
|
DROP TABLE IF EXISTS meeting_polls;
|
|
DROP TABLE IF EXISTS meeting_breakout_rooms;
|
|
DROP TABLE IF EXISTS meeting_recordings;
|
|
|
|
-- Drop email tables (order matters due to foreign keys)
|
|
DROP TABLE IF EXISTS shared_mailbox_members;
|
|
DROP TABLE IF EXISTS shared_mailboxes;
|
|
DROP TABLE IF EXISTS distribution_lists;
|
|
DROP TABLE IF EXISTS email_label_assignments;
|
|
DROP TABLE IF EXISTS email_labels;
|
|
DROP TABLE IF EXISTS email_rules;
|
|
DROP TABLE IF EXISTS email_auto_responders;
|
|
DROP TABLE IF EXISTS email_templates;
|
|
DROP TABLE IF EXISTS scheduled_emails;
|
|
DROP TABLE IF EXISTS email_signatures;
|
|
DROP TABLE IF EXISTS global_email_signatures;
|
|
-- Drop triggers and functions
|
|
DROP TRIGGER IF EXISTS external_connections_updated_at_trigger ON external_connections;
|
|
DROP FUNCTION IF EXISTS update_external_connections_updated_at();
|
|
|
|
DROP TRIGGER IF EXISTS dynamic_table_definitions_updated_at_trigger ON dynamic_table_definitions;
|
|
DROP FUNCTION IF EXISTS update_dynamic_table_definitions_updated_at();
|
|
|
|
-- Drop indexes
|
|
DROP INDEX IF EXISTS idx_external_connections_name;
|
|
DROP INDEX IF EXISTS idx_external_connections_bot_id;
|
|
|
|
DROP INDEX IF EXISTS idx_dynamic_table_fields_name;
|
|
DROP INDEX IF EXISTS idx_dynamic_table_fields_table_id;
|
|
|
|
DROP INDEX IF EXISTS idx_dynamic_table_definitions_connection;
|
|
DROP INDEX IF EXISTS idx_dynamic_table_definitions_name;
|
|
DROP INDEX IF EXISTS idx_dynamic_table_definitions_bot_id;
|
|
|
|
-- Drop tables (order matters due to foreign keys)
|
|
DROP TABLE IF EXISTS external_connections;
|
|
DROP TABLE IF EXISTS dynamic_table_fields;
|
|
DROP TABLE IF EXISTS dynamic_table_definitions;
|