-- Script SQL para criar as tabelas do sistema de montagem de questionário

-- Tabela de templates de questionários
CREATE TABLE IF NOT EXISTS questionario_template (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(255) NOT NULL,
    id_projeto_fk INT NULL,
    descricao TEXT,
    introducao TEXT,
    mensagem_fechamento TEXT,
    ativo CHAR(1) DEFAULT 'S',
    data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabela de perguntas do template
CREATE TABLE IF NOT EXISTS questionario_template_perguntas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_questionario_template_fk INT NOT NULL,
    numero INT NOT NULL,
    titulo VARCHAR(255),
    categoria VARCHAR(255),
    pergunta TEXT NOT NULL,
    tipo_resposta VARCHAR(50) NOT NULL, -- 'radio', 'checkbox', 'text', 'textarea', 'select', 'number'
    opcoes TEXT, -- JSON com opções e notas: [{"texto":"Opção 1","nota":10},{"texto":"Opção 2","nota":5}]
    nota_maxima DECIMAL(5,2) DEFAULT 0,
    ordem INT DEFAULT 0,
    obrigatorio CHAR(1) DEFAULT 'N',
    data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_questionario_template_fk) REFERENCES questionario_template(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Índices para melhorar performance
CREATE INDEX idx_template_ativo ON questionario_template(ativo);
CREATE INDEX idx_template_projeto ON questionario_template(id_projeto_fk);
CREATE INDEX idx_pergunta_template ON questionario_template_perguntas(id_questionario_template_fk);
CREATE INDEX idx_pergunta_ordem ON questionario_template_perguntas(ordem);

-- Sub-perguntas: id_pergunta_pai aponta para a pergunta mãe, id_opcao_gatilho é o índice da opção que dispara a sub-pergunta
ALTER TABLE questionario_template_perguntas ADD COLUMN IF NOT EXISTS id_pergunta_pai INT DEFAULT NULL AFTER obrigatorio;
ALTER TABLE questionario_template_perguntas ADD COLUMN IF NOT EXISTS id_opcao_gatilho INT DEFAULT NULL AFTER id_pergunta_pai;
CREATE INDEX idx_pergunta_pai ON questionario_template_perguntas(id_pergunta_pai);

-- Scripts para adicionar colunas em tabelas existentes (use apenas se as tabelas já existem sem estes campos)
-- ALTER TABLE questionario_template ADD COLUMN introducao TEXT AFTER descricao;
-- ALTER TABLE questionario_template ADD COLUMN mensagem_fechamento TEXT AFTER introducao;
-- ALTER TABLE questionario_template_perguntas ADD COLUMN numero INT NOT NULL DEFAULT 0 AFTER id_questionario_template_fk;
-- ALTER TABLE questionario_template_perguntas ADD COLUMN titulo VARCHAR(255) AFTER numero;
-- ALTER TABLE questionario_template_perguntas ADD COLUMN categoria VARCHAR(255) AFTER titulo;
