-- +goose Up
-- +goose StatementBegin

-- ─────────────────────────────────────────────────────────────────────────────
-- MENSAGENS: suporte a anexos (documentos/imagens) e status de entrega,
-- necessário para a janela de WhatsApp estilo "WhatsApp Web" no ComunicacaoView.
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE mensagens
  ADD COLUMN IF NOT EXISTS media_url        TEXT        DEFAULT '',
  ADD COLUMN IF NOT EXISTS media_tipo       TEXT        DEFAULT '',   -- 'imagem' | 'documento' | 'audio' | 'video'
  ADD COLUMN IF NOT EXISTS media_nome       TEXT        DEFAULT '',   -- nome original do arquivo
  ADD COLUMN IF NOT EXISTS media_mimetype   TEXT        DEFAULT '',
  ADD COLUMN IF NOT EXISTS media_tamanho    BIGINT      DEFAULT 0,    -- bytes
  ADD COLUMN IF NOT EXISTS whatsapp_msg_id  TEXT        DEFAULT '',   -- id da msg na Evolution API (dedupe/status)
  ADD COLUMN IF NOT EXISTS status_entrega   TEXT        NOT NULL DEFAULT 'enviada'
      CHECK (status_entrega IN ('pendente','enviada','entregue','lida','erro')),
  ADD COLUMN IF NOT EXISTS telefone_norm    TEXT        DEFAULT '';   -- telefone normalizado (só dígitos, com 55) p/ agrupar conversa

-- Backfill telefone_norm para linhas já existentes de whatsapp
UPDATE mensagens
SET telefone_norm = regexp_replace(COALESCE(para,''), '[^0-9]', '', 'g')
WHERE canal = 'whatsapp' AND telefone_norm = '';

CREATE INDEX IF NOT EXISTS idx_mensagens_conversa
  ON mensagens(tenant_id, canal, telefone_norm, criado_em DESC);

CREATE INDEX IF NOT EXISTS idx_mensagens_wa_msgid
  ON mensagens(tenant_id, whatsapp_msg_id) WHERE whatsapp_msg_id != '';

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin

DROP INDEX IF EXISTS idx_mensagens_wa_msgid;
DROP INDEX IF EXISTS idx_mensagens_conversa;

ALTER TABLE mensagens
  DROP COLUMN IF EXISTS media_url,
  DROP COLUMN IF EXISTS media_tipo,
  DROP COLUMN IF EXISTS media_nome,
  DROP COLUMN IF EXISTS media_mimetype,
  DROP COLUMN IF EXISTS media_tamanho,
  DROP COLUMN IF EXISTS whatsapp_msg_id,
  DROP COLUMN IF EXISTS status_entrega,
  DROP COLUMN IF EXISTS telefone_norm;

-- +goose StatementEnd
