-- ============================================
-- Criação das Tabelas Master (SEM criar banco)
-- Use este script se você NÃO tem permissão para criar banco
-- Execute este script DENTRO do banco que você já tem acesso
-- ============================================

-- IMPORTANTE: Execute este script DENTRO do seu banco atual
-- Ou peça ao provedor para criar o banco 'trainees_master' primeiro

-- Tabela de franquias
CREATE TABLE IF NOT EXISTS franchises (
    id INT AUTO_INCREMENT PRIMARY KEY,
    code VARCHAR(50) UNIQUE NOT NULL COMMENT 'Código da franquia (ex: 001)',
    name VARCHAR(255) NOT NULL COMMENT 'Nome da franquia',
    subdomain VARCHAR(100) UNIQUE DEFAULT NULL COMMENT 'Subdomínio (ex: franquia001) - opcional',
    database_name VARCHAR(100) NOT NULL COMMENT 'Nome do banco (ex: trainees_franquia_001)',
    status ENUM('active', 'inactive', 'suspended') DEFAULT 'active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_code (code),
    INDEX idx_subdomain (subdomain),
    INDEX idx_status (status),
    INDEX idx_database_name (database_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Cadastro de franquias';

-- Tabela centralizada de usuários (para login único)
CREATE TABLE IF NOT EXISTS users_master (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(100) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    franchise_id INT NOT NULL,
    user_id INT NOT NULL COMMENT 'ID do usuário no banco da franquia',
    role_id INT,
    status ENUM('active', 'inactive') DEFAULT 'active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (franchise_id) REFERENCES franchises(id) ON DELETE CASCADE,
    INDEX idx_username (username),
    INDEX idx_franchise (franchise_id),
    INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Usuários centralizados para login único';

-- Inserir franquia exemplo (ajustar conforme necessário)
INSERT INTO franchises (code, name, subdomain, database_name, status) VALUES
('001', 'Franquia Matriz', 'matriz', 'trainees_franquia_001', 'active')
ON DUPLICATE KEY UPDATE name = name;

