-- =====================================================================
-- Tabela: tb_app_hook (rotas de webhook conhecidas por app)
-- Banco:  w19_clikil41_eleicao
-- Projeto: f19
--
-- Mapeia: app (zapi) → ação (enviar/receber/...) → URL completa do webhook
-- que o serviço externo vai chamar.
--
-- URL padrão (Sr. Diplomata 2026-05-27):
--   https://hook.w19.com.br/<app_name>/<action>
--   (sem .php — _.htaccess do hook.f19 faz rewrite pra .php)
--
-- Em runtime, ao conectar uma instância, o sistema lê esta tabela pra
-- configurar os callbacks no provedor (Z-API, etc) automaticamente.
-- =====================================================================

CREATE TABLE IF NOT EXISTS `tb_app_hook` (
  `id_app_hook`     INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `id_app`          SMALLINT UNSIGNED NOT NULL,
  `hook_action`     VARCHAR(40)  NOT NULL,         -- 'enviar','receber','chat','status','desconectar','conectar',...
  `hook_url`        VARCHAR(500) NOT NULL,         -- URL completa (sem .php no final)
  `hook_method`     VARCHAR(10)  NOT NULL DEFAULT 'POST',
  `hook_description` VARCHAR(255) DEFAULT NULL,
  `hook_status`     TINYINT(1)   NOT NULL DEFAULT 1,
  `hook_created_at` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_app_hook`),
  UNIQUE KEY `uk_app_action` (`id_app`, `hook_action`),
  KEY `ix_app_hook_app` (`id_app`),
  CONSTRAINT `fk_app_hook_app` FOREIGN KEY (`id_app`) REFERENCES `tb_app` (`id_app`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Seed: hooks do app Z-API (id_app=1)
INSERT INTO `tb_app_hook` (`id_app`, `hook_action`, `hook_url`, `hook_method`, `hook_description`) VALUES
  (1, 'enviar',      'https://hook.w19.com.br/zapi/enviar',      'POST', 'Mensagem ENVIADA pela conta (disparo da campanha)'),
  (1, 'receber',     'https://hook.w19.com.br/zapi/receber',     'POST', 'Mensagem RECEBIDA na conta (resposta de contato)'),
  (1, 'chat',        'https://hook.w19.com.br/zapi/chat',        'POST', 'Evento de chat (presença, leitura, etc)'),
  (1, 'status',      'https://hook.w19.com.br/zapi/status',      'POST', 'Status de entrega/leitura de mensagens'),
  (1, 'desconectar', 'https://hook.w19.com.br/zapi/desconectar', 'POST', 'Instância foi desconectada (perdeu conexão WhatsApp)'),
  (1, 'conectar',    'https://hook.w19.com.br/zapi/conectar',    'POST', 'Instância acabou de conectar')
ON DUPLICATE KEY UPDATE
  `hook_url`        = VALUES(`hook_url`),
  `hook_method`     = VALUES(`hook_method`),
  `hook_description`= VALUES(`hook_description`);
