botserver/migrations/00000000000000_diesel_initial_setup/up.sql

34 lines
1.1 KiB
MySQL
Raw Normal View History

Consolidate all database migrations into single optimized schema BREAKING CHANGE: Complete database redesign Migrations: - Remove all 6.x.x and 7.0.0 migrations - Create single consolidated migration 20250101000000_consolidated_schema - Add Diesel initial setup migration Schema Optimizations: - All domain values use SMALLINT instead of VARCHAR/TEXT (2 bytes vs 20+ bytes) - Sharding infrastructure: shard_config, tenant_shard_map tables - All tables include tenant_id and shard_id for horizontal scaling - Proper indexing strategies for high-throughput queries - Foreign key constraints for data integrity - Updated_at triggers via diesel_manage_updated_at Tables (35 total): - Core: tenants, users, bots, bot_configuration, bot_channels - Sessions: user_sessions, message_history - Memory: bot_memories - Auto Tasks: auto_tasks, execution_plans, task_approvals, task_decisions - Safety: safety_audit_log, intent_classifications - Apps: generated_apps, designer_changes, designer_pending_changes - KB: kb_collections, kb_documents, session_kb_associations, kb_sources - Tools: tools, system_automations, pending_info - Analytics: usage_analytics, analytics_events - Tasks: tasks, task_comments - Accounts: connected_accounts, session_account_associations - Communication: whatsapp_numbers, clicks - Access: table_role_access, context_injections - Organizations: organizations, user_organizations Rust Schema: - Updated schema.rs to match new consolidated schema - All diesel table definitions with proper types - Foreign key relationships defined WARNING: This is a DESTRUCTIVE migration - drop existing database before applying
2025-12-29 12:29:23 -03:00
-- This file was automatically created by Diesel to setup helper functions
-- and other internal bookkeeping. This file is safe to edit, any future
-- temporary files will be placed in a different location.
-- Sets up a trigger for the given table to automatically set a column called
-- `updated_at` whenever the row is modified (unless `updated_at` was included
-- in the modified columns)
--
-- # Example
--
-- ```sql
-- CREATE TABLE users (id SERIAL PRIMARY KEY, updated_at TIMESTAMP NOT NULL DEFAULT NOW());
--
-- SELECT diesel_manage_updated_at('users');
-- ```
CREATE OR REPLACE FUNCTION diesel_manage_updated_at(_tbl regclass) RETURNS VOID AS $$
BEGIN
EXECUTE format('CREATE TRIGGER set_updated_at BEFORE UPDATE ON %s
FOR EACH ROW EXECUTE PROCEDURE diesel_set_updated_at()', _tbl);
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION diesel_set_updated_at() RETURNS trigger AS $$
BEGIN
IF (
NEW IS DISTINCT FROM OLD AND
NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at
) THEN
NEW.updated_at := current_timestamp;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;