43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
import pg from 'pg';
|
|
import dotenv from 'dotenv';
|
|
dotenv.config();
|
|
|
|
const pool = new pg.Pool({
|
|
user: process.env.POSTGRES_USER || 'edumanager',
|
|
host: process.env.POSTGRES_HOST || '150.230.87.131',
|
|
database: process.env.POSTGRES_DB || 'edumanager',
|
|
password: process.env.POSTGRES_PASSWORD,
|
|
port: process.env.POSTGRES_PORT || 5432,
|
|
});
|
|
|
|
async function run() {
|
|
try {
|
|
const res = await pool.query(`
|
|
WITH RankedRecords AS (
|
|
SELECT
|
|
id,
|
|
ROW_NUMBER() OVER (
|
|
PARTITION BY aluno_id, COALESCE(aula_id, data::date::text)
|
|
ORDER BY
|
|
CASE
|
|
WHEN tipo = 'absence' AND justificativa IS NOT NULL THEN 1
|
|
WHEN tipo = 'presence' THEN 2
|
|
WHEN tipo = 'absence' AND justificativa IS NULL THEN 3
|
|
ELSE 4
|
|
END ASC,
|
|
created_at DESC
|
|
) as rn
|
|
FROM frequencias
|
|
)
|
|
DELETE FROM frequencias WHERE id IN (SELECT id FROM RankedRecords WHERE rn > 1);
|
|
`);
|
|
console.log('Duplicatas deletadas:', res.rowCount);
|
|
} catch (err) {
|
|
console.error('Erro:', err);
|
|
} finally {
|
|
pool.end();
|
|
}
|
|
}
|
|
|
|
run();
|