/**
 * setup.js - Script de inicialização para cPanel
 * Este script cria as tabelas e o usuário administrador inicial.
 */
const { initDB } = require('./src/db');

async function runSetup() {
    try {
        console.log('--- Iniciando Configuração Relovable ---');

        // 0. Correção de Collation (Fixer)
        console.log('[DB] Padronizando collation para utf8mb4_unicode_ci...');
        const dbName = process.env.DB_NAME || 'lovable_licenses';
        const { query } = require('./src/db');

        await query(`ALTER DATABASE \`${dbName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`);

        const tables = [
            'users', 'licenses', 'audit_logs', 'app_settings',
            'lovable_accounts', 'lovable_projects', 'lovable_credit_history',
            'extension_errors', 'extension_heartbeats', 'license_validation_logs',
            'app_broadcasts', 'app_prompts'
        ];

        for (const table of tables) {
            try {
                await query(`ALTER TABLE \`${table}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`);
            } catch (e) {
                // Se a tabela não existe ainda, ignoramos (o initDB vai criar certo depois)
            }
        }

        // 1. Inicializa o Schema
        await initDB();

        // 2. Executa o Seed (Admin)
        console.log('[SEED] Criando administrador inicial...');
        require('./src/seed');

        // Pequeno delay para garantir que o seed (que é async por dentro mas auto-executável) termine
        setTimeout(() => {
            console.log('--- Configuração Finalizada com Sucesso! ---');
            process.exit(0);
        }, 2000);

    } catch (error) {
        console.error('❌ ERRO NA CONFIGURAÇÃO:', error);
        process.exit(1);
    }
}

runSetup();
