# COMANDO PARA EXECUTAR NA VPS
# Copie e cole este comando completo na VPS

cd /var/www/maktubia-backend

cat > criar-hamam-admin.js << 'EOFSCRIPT'
require('dotenv').config();
const bcrypt = require('bcrypt');
const postgresql = require('./config/postgresql');

(async () => {
    try {
        console.log('🔧 Conectando ao banco de dados...');
        const client = await postgresql.getClient();
        
        try {
            await client.query('BEGIN');
            
            // 1. Verificar ou criar role admin
            let role = await client.query(`SELECT role_id FROM roles WHERE role_name = 'admin' LIMIT 1`);
            let adminRoleId;
            if (role.rows.length === 0) {
                const newRole = await client.query(`
                    INSERT INTO roles (role_name, role_description, permissions)
                    VALUES ('admin', 'Administrador', $1)
                    RETURNING role_id
                `, [JSON.stringify({
                    "*": ["*"]
                })]);
                adminRoleId = newRole.rows[0].role_id;
                console.log('✅ Role admin criado:', adminRoleId);
            } else {
                adminRoleId = role.rows[0].role_id;
                console.log('ℹ️  Role admin já existe:', adminRoleId);
            }
            
            // 2. Gerar hash da senha
            const passwordHash = await bcrypt.hash('2535', 10);
            
            // 3. Verificar se usuário existe
            let user = await client.query(`SELECT user_id FROM users WHERE username = 'hamam' LIMIT 1`);
            
            let userId;
            if (user.rows.length === 0) {
                // Criar usuário
                const newUser = await client.query(`
                    INSERT INTO users (username, email, password_hash, role_id, is_active, created_at, updated_at)
                    VALUES ($1, $2, $3, $4, $5, NOW(), NOW())
                    RETURNING user_id
                `, ['hamam', 'hamam@maktubia.com', passwordHash, adminRoleId, true]);
                userId = newUser.rows[0].user_id;
                console.log('✅ Usuário criado:', userId);
                
                // Criar perfil
                await client.query(`
                    INSERT INTO users_profile (user_id, name, phone, created_at, updated_at)
                    VALUES ($1, $2, $3, NOW(), NOW())
                `, [userId, 'Hamam Admin', '+258844232354']);
                console.log('✅ Perfil criado');
                
                // Criar carteira
                await client.query(`
                    INSERT INTO wallets (user_id, balance, points_balance, created_at, updated_at)
                    VALUES ($1, $2, $3, NOW(), NOW())
                `, [userId, 0.00, 0]);
                console.log('✅ Carteira criada');
            } else {
                userId = user.rows[0].user_id;
                // Atualizar usuário existente
                await client.query(`
                    UPDATE users 
                    SET password_hash = $1, role_id = $2, is_active = $3, updated_at = NOW()
                    WHERE user_id = $4
                `, [passwordHash, adminRoleId, true, userId]);
                console.log('✅ Usuário atualizado:', userId);
            }
            
            await client.query('COMMIT');
            
            // Mostrar resultado
            const result = await client.query(`
                SELECT u.user_id, u.username, u.email, r.role_name, u.is_active, wp.name, w.points_balance
                FROM users u
                LEFT JOIN roles r ON u.role_id = r.role_id
                LEFT JOIN users_profile wp ON u.user_id = wp.user_id
                LEFT JOIN wallets w ON u.user_id = w.user_id
                WHERE u.user_id = $1
            `, [userId]);
            
            const userData = result.rows[0];
            console.log('');
            console.log('========================================');
            console.log('✅ USUÁRIO ADMIN CRIADO COM SUCESSO!');
            console.log('========================================');
            console.log('Username:', userData.username);
            console.log('Email:', userData.email);
            console.log('Role:', userData.role_name);
            console.log('Senha: 2535');
            console.log('User ID:', userData.user_id);
            console.log('Ativo:', userData.is_active);
            console.log('Nome:', userData.name);
            console.log('Pontos:', userData.points_balance || 0);
            console.log('========================================');
            
            client.release();
            process.exit(0);
            
        } catch (error) {
            await client.query('ROLLBACK');
            throw error;
        }
    } catch (error) {
        console.error('❌ Erro ao criar usuário:', error);
        process.exit(1);
    }
})();
EOFSCRIPT

node criar-hamam-admin.js

rm criar-hamam-admin.js












