-- =====================================================================
-- MIGRATION 007  (Bloco 8 — Portal de Transparência)
-- Publicação INTENCIONAL de documentos no portal público.
-- A tabela `documents` não tinha marcador de visibilidade pública (só
-- `status` interno). Para cumprir a regra "PUBLIC = apenas o que for
-- explicitamente publicado", adicionamos um flag dedicado.
-- ALTER em tabela existente — NENHUMA tabela nova. IDEMPOTENTE.
-- =====================================================================

DROP PROCEDURE IF EXISTS sgg_add_col;
DROP PROCEDURE IF EXISTS sgg_add_idx;
DELIMITER //
CREATE PROCEDURE sgg_add_col(IN tbl VARCHAR(64), IN col VARCHAR(64), IN ddl VARCHAR(255))
BEGIN
  IF NOT EXISTS (SELECT 1 FROM information_schema.columns
    WHERE table_schema=DATABASE() AND table_name=tbl AND column_name=col) THEN
    SET @s=CONCAT('ALTER TABLE `',tbl,'` ADD COLUMN ',ddl); PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
  END IF;
END //
CREATE PROCEDURE sgg_add_idx(IN tbl VARCHAR(64), IN idx VARCHAR(64), IN ddl VARCHAR(255))
BEGIN
  IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
    WHERE table_schema=DATABASE() AND table_name=tbl AND index_name=idx) THEN
    SET @s=CONCAT('ALTER TABLE `',tbl,'` ADD ',ddl); PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
  END IF;
END //
DELIMITER ;

CALL sgg_add_col('documents','is_public',"is_public TINYINT(1) NOT NULL DEFAULT 0 AFTER status");
CALL sgg_add_col('documents','published_at',"published_at DATETIME NULL AFTER is_public");
CALL sgg_add_idx('documents','idx_docs_public','KEY idx_docs_public (is_public)');

DROP PROCEDURE IF EXISTS sgg_add_col;
DROP PROCEDURE IF EXISTS sgg_add_idx;
