-- Webhooks de CRM: cada empresa possui um segredo HMAC próprio.
--
-- O segredo é usado para validar a autenticidade do corpo das requisições
-- recebidas no endpoint de ingestão de dados de CRM. Como é por empresa,
-- o segredo de uma empresa nunca consegue assinar dados de outra.
--
-- Formato: 32 bytes aleatórios em hexadecimal = 64 caracteres.
-- Default vazio: a aplicação trata segredo vazio como "não configurado"
-- e rejeita o webhook (401), evitando aceitar requisições sem proteção.

ALTER TABLE company
    ADD COLUMN IF NOT EXISTS company_hmac_secret VARCHAR(64) NOT NULL DEFAULT '';

-- Backfill: gera um segredo para empresas já existentes para que possam
-- receber webhooks imediatamente. Novos segredos de produção devem ser
-- gerados pela aplicação via random_bytes (ver Libs\Hmac::generateSecret).
UPDATE company
SET company_hmac_secret =
        md5(random()::text || clock_timestamp()::text || company_id::text)
        || md5(random()::text || clock_timestamp()::text || company_id::text || random()::text)
WHERE company_hmac_secret = '';
