-- Criar banco de dados
CREATE DATABASE IF NOT EXISTS provadevida_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE provadevida_db;

-- Tabela de tokens de acesso (tokens agora são VARCHAR(10) para aceitar 10 dígitos)
CREATE TABLE IF NOT EXISTS tokens (
    id INT AUTO_INCREMENT PRIMARY KEY,
    token VARCHAR(10) UNIQUE NOT NULL,
    tipo ENUM('administrador', 'atendente') NOT NULL,
    nome VARCHAR(100) NOT NULL,
    ativo BOOLEAN DEFAULT TRUE,
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ultimo_acesso TIMESTAMP NULL,
    criado_por INT NULL,
    INDEX idx_token (token),
    INDEX idx_tipo (tipo),
    INDEX idx_ativo (ativo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabela de logs de acesso
CREATE TABLE IF NOT EXISTS logs_acesso (
    id INT AUTO_INCREMENT PRIMARY KEY,
    token_id INT NOT NULL,
    ip_address VARCHAR(45),
    user_agent TEXT,
    acao VARCHAR(100),
    data_hora TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (token_id) REFERENCES tokens(id) ON DELETE CASCADE,
    INDEX idx_token_id (token_id),
    INDEX idx_data_hora (data_hora)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Inserir token administrador inicial (10 dígitos numéricos)
INSERT INTO tokens (token, tipo, nome, ativo) 
VALUES (LPAD(FLOOR(RAND() * 10000000000), 10, '0'), 'administrador', 'Admin Principal', TRUE);

-- Exibir o token gerado
SELECT token, tipo, nome FROM tokens WHERE nome = 'Admin Principal';