-- =====================================================================
-- Tabela: tb_dispatch_message
-- Projeto: f19 — banco w19_clikil41_eleicao
--
-- 1 linha = 1 mensagem (in=contato → apoiador, out=f19/apoiador → contato)
-- associada a um disparo individual (tb_dispatch_item).
--
-- Separada do tb_dispatch_item pra escalar: 1 contato pode mandar
-- dezenas de msgs em sequência sem inflar o registro principal.
--
-- ORDER BY message_at ASC reconstrói a conversa do contato.
--
-- message_zapi_id — id da Z-API (zaapId/messageId) — pra dedup quando
-- webhook retransmite a mesma msg (status updates).
-- =====================================================================

CREATE TABLE IF NOT EXISTS `tb_dispatch_message` (
  `id_dispatch_message` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `id_dispatch_item`    BIGINT UNSIGNED NOT NULL,
  `message_direction`   ENUM('in','out') NOT NULL DEFAULT 'in',
  `message_text`        TEXT            NOT NULL,
  `message_at`          DATETIME        NOT NULL,                        -- timestamp da mensagem (do payload Z-API)
  `message_zapi_id`     VARCHAR(80)     DEFAULT NULL,
  `message_created_at`  DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_dispatch_message`),
  KEY `ix_msg_item_at`  (`id_dispatch_item`, `message_at`),
  KEY `ix_msg_zapi_id`  (`message_zapi_id`),
  CONSTRAINT `fk_msg_item` FOREIGN KEY (`id_dispatch_item`)
    REFERENCES `tb_dispatch_item` (`id_dispatch_item`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
