CREATE TABLE IF NOT EXISTS tenants ( id BIGSERIAL PRIMARY KEY, tenant_id TEXT NOT NULL UNIQUE, name TEXT NOT NULL, business_type TEXT, industry TEXT, country TEXT, city TEXT, timezone TEXT NOT NULL DEFAULT 'Asia/Almaty', language_preferences_json TEXT NOT NULL DEFAULT '["ru"]', default_currency TEXT NOT NULL DEFAULT 'KZT', subscription_plan TEXT, is_active BOOLEAN NOT NULL DEFAULT TRUE, created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS ix_tenants_tenant_id ON tenants(tenant_id); CREATE INDEX IF NOT EXISTS ix_tenants_is_active ON tenants(is_active); CREATE INDEX IF NOT EXISTS ix_tenants_country ON tenants(country); CREATE INDEX IF NOT EXISTS ix_tenants_city ON tenants(city); CREATE INDEX IF NOT EXISTS ix_tenants_default_currency ON tenants(default_currency); CREATE TABLE IF NOT EXISTS tenant_sales_settings ( id BIGSERIAL PRIMARY KEY, tenant_id TEXT NOT NULL UNIQUE, default_pipeline_id TEXT, default_language TEXT NOT NULL DEFAULT 'ru', default_currency TEXT NOT NULL DEFAULT 'KZT', enabled_text_channels_json TEXT NOT NULL DEFAULT '[]', enabled_voice_channels_json TEXT NOT NULL DEFAULT '[]', payment_provider_settings_json TEXT NOT NULL DEFAULT '{}', document_settings_json TEXT NOT NULL DEFAULT '{}', created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS ix_tenant_sales_settings_tenant_id ON tenant_sales_settings(tenant_id); CREATE INDEX IF NOT EXISTS ix_tenant_sales_settings_default_pipeline_id ON tenant_sales_settings(default_pipeline_id); CREATE TABLE IF NOT EXISTS tenant_integrations ( id BIGSERIAL PRIMARY KEY, integration_id TEXT NOT NULL UNIQUE, tenant_id TEXT NOT NULL, provider_type TEXT NOT NULL, provider_name TEXT NOT NULL, provider_account_id TEXT, external_identifier TEXT, settings_json TEXT NOT NULL DEFAULT '{}', is_active BOOLEAN NOT NULL DEFAULT TRUE, created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS ix_tenant_integrations_integration_id ON tenant_integrations(integration_id); CREATE INDEX IF NOT EXISTS ix_tenant_integrations_tenant_id ON tenant_integrations(tenant_id); CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_type ON tenant_integrations(provider_type); CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_name ON tenant_integrations(provider_name); CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_account_id ON tenant_integrations(provider_account_id); CREATE INDEX IF NOT EXISTS ix_tenant_integrations_external_identifier ON tenant_integrations(external_identifier); CREATE INDEX IF NOT EXISTS ix_tenant_integrations_is_active ON tenant_integrations(is_active); CREATE INDEX IF NOT EXISTS idx_tenant_integrations_provider_account ON tenant_integrations(provider_type, provider_name, provider_account_id); CREATE INDEX IF NOT EXISTS idx_tenant_integrations_external_identifier ON tenant_integrations(provider_type, provider_name, external_identifier); CREATE UNIQUE INDEX IF NOT EXISTS idx_sales_payments_tenant_external_payment_unique ON sales_payments(tenant_id, payment_provider, external_payment_id) WHERE external_payment_id IS NOT NULL;