edumanagerpro2/manager/scratch/diag_sync.js

54 lines
2.1 KiB
JavaScript

import pkg from 'pg';
const { Pool } = pkg;
const DATABASE_URL = 'postgresql://edumanager:EduManager2026!Seguro@localhost:5432/edumanager';
const pool = new Pool({ connectionString: DATABASE_URL });
async function runDiag() {
try {
const { rows } = await pool.query('SELECT data FROM school_data WHERE id = 1');
const data = rows[0]?.data || {};
console.log('--- DIAGNÓSTICO DE SINCRONIZAÇÃO ---');
// 1. Verificar Alunos
const jsonStudents = data.students || [];
const { rows: dbStudents } = await pool.query('SELECT id, nome FROM alunos');
console.log(`JSON: ${jsonStudents.length} alunos | DB: ${dbStudents.length} alunos`);
if (jsonStudents.length > 0) {
const sample = jsonStudents[0];
const inDb = dbStudents.find(s => s.id === sample.id);
console.log(`Exemplo Aluno [${sample.name}]: ${inDb ? '✅ No DB' : '❌ NÃO ESTÁ NO DB'}`);
// Verificar campos específicos do primeiro aluno
if (inDb) {
const { rows: fullStudent } = await pool.query('SELECT * FROM alunos WHERE id = $1', [sample.id]);
const dbS = fullStudent[0];
console.log('--- Comparação de Campos (Exemplo) ---');
console.log(`CPF: JSON[${sample.cpf || '?'}] vs DB[${dbS.cpf || '?'}]`);
console.log(`Telefone: JSON[${sample.phone || '?'}] vs DB[${dbS.telefone || '?'}]`);
console.log(`Status: JSON[${sample.status || '?'}] vs DB[${dbS.status || '?'}]`);
}
}
// 2. Verificar Turmas
const jsonClasses = data.classes || [];
const { rows: dbClasses } = await pool.query('SELECT COUNT(*) FROM turmas');
console.log(`JSON: ${jsonClasses.length} turmas | DB: ${dbClasses[0].count} turmas`);
// 3. Verificar Provas
const jsonExams = data.exams || [];
const { rows: dbExams } = await pool.query('SELECT COUNT(*) FROM provas');
console.log(`JSON: ${jsonExams.length} provas | DB: ${dbExams[0].count} provas`);
} catch (err) {
console.error('Erro no diagnóstico:', err.message);
} finally {
await pool.end();
}
}
runDiag();