/**
 * reset.js — Dropa TODAS as tabelas do banco e recria o schema limpo.
 * Execute com: npm run db:reset
 *
 * ⚠️ ATENÇÃO: Isso apaga TODOS os dados, incluindo licenças, usuários e admin.
 * Rode npm run seed depois para recriar o superadmin.
 */
require('dotenv').config();
const mysql = require('mysql2/promise');

const dbConfig = {
    host: process.env.DB_HOST || 'localhost',
    user: process.env.DB_USER || 'root',
    password: process.env.DB_PASS || '',
    database: process.env.DB_NAME || 'lovable_licenses'
};

async function resetDB() {
    const conn = await mysql.createConnection(dbConfig);
    console.log('⚠️  RESET COMPLETO DO BANCO — todos os dados serão apagados\n');

    try {
        // Desligar FK checks para poder dropar em qualquer ordem
        await conn.execute('SET FOREIGN_KEY_CHECKS = 0');

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

        for (const table of tables) {
            await conn.execute(`DROP TABLE IF EXISTS \`${table}\``);
            console.log(`  🗑️  DROP TABLE ${table}`);
        }

        await conn.execute('SET FOREIGN_KEY_CHECKS = 1');

        console.log('\n✅ Banco resetado com sucesso!');
        console.log('👉 Execute agora: npm run seed  →  para criar o superadmin');
        console.log('👉 Execute agora: npm run dev   →  para recriar o schema\n');

    } catch (err) {
        console.error('❌ Erro no reset:', err.message);
        process.exit(1);
    } finally {
        await conn.end();
    }
}

resetDB();
