CREATE DATABASE IF NOT EXISTS cefas_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

USE cefas_app;

CREATE TABLE usuarios (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(150) NOT NULL,
    email VARCHAR(180) NOT NULL UNIQUE,
    telefone VARCHAR(30),
    data_nascimento DATE,
    senha VARCHAR(255) NOT NULL,
    perfil ENUM('membro','lider','secretaria','admin','superadmin') NOT NULL DEFAULT 'membro',
    status ENUM('ativo','inativo','pendente') NOT NULL DEFAULT 'pendente',
    foto VARCHAR(255),
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE departamentos (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(120) NOT NULL,
    descricao TEXT,
    lider_id INT UNSIGNED NULL,
    imagem VARCHAR(255),
    ativo TINYINT(1) DEFAULT 1,
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE membros_departamentos (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT UNSIGNED NOT NULL,
    departamento_id INT UNSIGNED NOT NULL,
    funcao VARCHAR(100),
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE,
    FOREIGN KEY (departamento_id) REFERENCES departamentos(id) ON DELETE CASCADE
);

CREATE TABLE liturgias (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    data_liturgia DATE NOT NULL UNIQUE,
    titulo VARCHAR(180),
    primeira_leitura LONGTEXT,
    salmo LONGTEXT,
    segunda_leitura LONGTEXT,
    evangelho LONGTEXT,
    reflexao LONGTEXT,
    publicado TINYINT(1) DEFAULT 1,
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE videos (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    youtube_id VARCHAR(50) UNIQUE,
    titulo VARCHAR(255) NOT NULL,
    descricao TEXT,
    thumbnail VARCHAR(255),
    duracao VARCHAR(20),
    tipo ENUM('video','live','agendado') DEFAULT 'video',
    publicado_em DATETIME,
    ativo TINYINT(1) DEFAULT 1
);

CREATE TABLE pedidos_oracao (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT UNSIGNED NULL,
    nome VARCHAR(150),
    pedido LONGTEXT NOT NULL,
    anonimo TINYINT(1) DEFAULT 0,
    status ENUM('novo','em_oracao','concluido') DEFAULT 'novo',
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE SET NULL
);

CREATE TABLE conversas_ia (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT UNSIGNED NULL,
    mensagem_usuario LONGTEXT NOT NULL,
    resposta_ia LONGTEXT,
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE SET NULL
);

CREATE TABLE configuracoes (
    chave VARCHAR(100) PRIMARY KEY,
    valor LONGTEXT
);

INSERT INTO configuracoes (chave, valor) VALUES
('nome_app', 'Cefas'),
('slogan', 'Alma por Almas • Firmados na Rocha'),
('youtube_channel_id', ''),
('youtube_api_key', ''),
('radio_url', '');


-- Após cadastrar sua conta, transforme-a em administradora:
-- UPDATE usuarios SET perfil='admin',status='ativo' WHERE email='seuemail@exemplo.com';
