88 lines
2.9 KiB
JavaScript
88 lines
2.9 KiB
JavaScript
import pg from 'pg';
|
|
|
|
const DATABASE_URL = 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager';
|
|
const pool = new pg.Pool({ connectionString: DATABASE_URL });
|
|
|
|
async function restore() {
|
|
try {
|
|
console.log('--- RESTORING & APPROVING EVILLA JUSTIFICATION ---');
|
|
|
|
// 1. Update SQL table
|
|
console.log('1. Updating "frequencias" table on VPS (Accepted = TRUE)...');
|
|
const justPayload = JSON.stringify({
|
|
motivo: 'tive que levar a minha cadela para outra cidade para o veterinário, não teria como “faltar”',
|
|
arquivo: null
|
|
});
|
|
|
|
const sqlRes = await pool.query(
|
|
`UPDATE frequencias
|
|
SET tipo = 'absence',
|
|
justificativa = $1,
|
|
justificativa_aceita = true,
|
|
aula_id = 'c73336be-c437-4808-ab40-4e8d7439388b'
|
|
WHERE id = 'auto-abs-1780168194386-jaewp'`,
|
|
[justPayload]
|
|
);
|
|
console.log(`Updated in SQL: ${sqlRes.rowCount} row(s)`);
|
|
|
|
// 2. Update JSON blob
|
|
console.log('2. Updating school_data JSON blob on VPS (Accepted = TRUE)...');
|
|
const { rows } = await pool.query('SELECT data FROM school_data WHERE id = 1');
|
|
if (rows.length === 0) {
|
|
throw new Error('school_data table is empty or missing id=1');
|
|
}
|
|
const schoolData = rows[0].data;
|
|
if (!schoolData.attendance) {
|
|
schoolData.attendance = [];
|
|
}
|
|
|
|
let updatedCount = 0;
|
|
schoolData.attendance = schoolData.attendance.map(record => {
|
|
if (record.id === 'auto-abs-1780168194386-jaewp' ||
|
|
(record.studentId === '311709fb-68ab-4168-8684-887b5ec2d731' && record.date.startsWith('2026-05-30'))) {
|
|
updatedCount++;
|
|
return {
|
|
...record,
|
|
type: 'absence',
|
|
justification: justPayload,
|
|
justificationAccepted: true,
|
|
lessonId: 'c73336be-c437-4808-ab40-4e8d7439388b'
|
|
};
|
|
}
|
|
return record;
|
|
});
|
|
|
|
if (updatedCount === 0) {
|
|
console.log('Record not found in JSON array. Creating new one...');
|
|
schoolData.attendance.push({
|
|
id: 'auto-abs-1780168194386-jaewp',
|
|
date: '2026-05-30T14:00:00',
|
|
type: 'absence',
|
|
photo: null,
|
|
classId: '9f47fde6-0637-4f54-a3c2-9fd9b68b2022',
|
|
lessonId: 'c73336be-c437-4808-ab40-4e8d7439388b',
|
|
verified: false,
|
|
studentId: '311709fb-68ab-4168-8684-887b5ec2d731',
|
|
justification: justPayload,
|
|
justificationAccepted: true,
|
|
createdAt: '2026-05-30T19:47:33.723Z'
|
|
});
|
|
updatedCount = 1;
|
|
}
|
|
|
|
const saveRes = await pool.query(
|
|
'UPDATE school_data SET data = $1, updated_at = NOW() WHERE id = 1',
|
|
[JSON.stringify(schoolData)]
|
|
);
|
|
console.log(`Updated in JSON: ${updatedCount} record(s). DB Update: ${saveRes.rowCount}`);
|
|
|
|
console.log('--- RESTORATION & APPROVAL COMPLETED SUCCESSFULLY ---');
|
|
} catch (err) {
|
|
console.error('ERROR during restoration:', err.message);
|
|
} finally {
|
|
await pool.end();
|
|
}
|
|
}
|
|
|
|
restore();
|