diff --git a/database/migrations/025_whatsapp_config.sql b/database/migrations/025_whatsapp_config.sql new file mode 100644 index 0000000..95a5f37 --- /dev/null +++ b/database/migrations/025_whatsapp_config.sql @@ -0,0 +1,17 @@ +-- Migration 025: Configuração da integração WhatsApp (Meta API) +CREATE TABLE whatsapp_config ( + id SERIAL PRIMARY KEY, + access_token TEXT, + phone_number_id VARCHAR(50), + api_version VARCHAR(20) NOT NULL DEFAULT 'v25.0', + webhook_token VARCHAR(255), + updated_at TIMESTAMP NOT NULL DEFAULT NOW(), + updated_by INTEGER REFERENCES usuarios(id) ON DELETE SET NULL +); + +-- Garante que exista no máximo uma linha de configuração +CREATE UNIQUE INDEX whatsapp_config_singleton ON whatsapp_config ((TRUE)); + +-- Linha inicial vazia para facilitar o U PDATE posterior +INSERT INTO whatsapp_config (access_token, phone_number_id, api_version, webhook_token) +VALUES (NULL, NULL, 'v25.0', NULL); diff --git a/database/migrations/026_whatsapp_templates_hsm.sql b/database/migrations/026_whatsapp_templates_hsm.sql new file mode 100644 index 0000000..94f381d --- /dev/null +++ b/database/migrations/026_whatsapp_templates_hsm.sql @@ -0,0 +1,29 @@ +-- Migration 026: WhatsApp HSM Templates + WABA ID +-- Adiciona suporte a templates HSM da Meta com botões, header, footer e variáveis estruturadas. + +-- WABA ID na config (necessário para gerenciar templates via API) +ALTER TABLE whatsapp_config + ADD COLUMN IF NOT EXISTS waba_id VARCHAR(100); + +-- Colunas HSM na tabela de templates +ALTER TABLE whatsapp_templates + ADD COLUMN IF NOT EXISTS language VARCHAR(10) NOT NULL DEFAULT 'pt_BR', + ADD COLUMN IF NOT EXISTS meta_template_name VARCHAR(512), + ADD COLUMN IF NOT EXISTS meta_template_id VARCHAR(100), + ADD COLUMN IF NOT EXISTS meta_status VARCHAR(50), + ADD COLUMN IF NOT EXISTS header_type VARCHAR(20), + ADD COLUMN IF NOT EXISTS header_text TEXT, + ADD COLUMN IF NOT EXISTS footer_text TEXT, + ADD COLUMN IF NOT EXISTS buttons JSONB, + ADD COLUMN IF NOT EXISTS body_variables JSONB; + +-- Templates existentes sem meta_template_name ficam como rascunho +UPDATE whatsapp_templates + SET status = 'draft' + WHERE status IN ('approved', 'meta_review', 'admin_review') + AND meta_template_name IS NULL; + +-- Índice único para meta_template_name (ignora NULLs) +CREATE UNIQUE INDEX IF NOT EXISTS whatsapp_templates_meta_name_idx + ON whatsapp_templates (meta_template_name) + WHERE meta_template_name IS NOT NULL;