[Git][root/dmarc-report][main] [ADD] Mudando filtros para url query, datas no formato br, ordenação de...

Guiusepe pushed to branch main at Root / DMARC Report Commits: 1c73d465 by godp21 at 2025-08-07T14:53:17-03:00 [ADD] Mudando filtros para url query, datas no formato br, ordenação de resultados por min e maxdate - - - - - 2 changed files: - README.md - backend.js Changes: ===================================== README.md ===================================== @@ -3,10 +3,12 @@ [x] Renomear a rota /details?serial=:serial para /reports/details/:serial. [x] ip e ip6 tão vindo em número/bytes, dá pra vir como uma string formatada de IP. [x] Criar uma rota pra baixar o XML, algo tipo /reports/:id.xml -[ ] Adicionar um /reports/extended/ que vem com cada linha "expandida", ou seja, já vem tipo um details em cada linha. +[x] Converter as datas para padrão BR +[x] Mudar padrão de argumentos pela URL para usar query +[x] Adicionar ordenação, tipo um ?sort ou ?order, daí a ordenação padrão poderia ser ?order=-maxdate, ou seja data máxima descendente. [ ] Adicionar paginação, ?page, ?offset, algo tipo 50 resultados por página ou escolhe via ?per_page. -[ ] Adicionar ordenação, tipo um ?sort ou ?order, daí a ordenação padrão poderia ser ?order=-maxdate, ou seja data máxima descendente. +[ ] Adicionar um /reports/extended/ que vem com cada linha "expandida", ou seja, já vem tipo um details em cada linha. [ ]O dmarc_result_max é igual ao dmarc_result_min no details, dá pra só mudar pra dmarc_result, esse é tipo um "score" do que passou. ### Filtros ===================================== backend.js ===================================== @@ -5,10 +5,22 @@ const ip = require('ip') ; const { createServer } = require('node:http') ; const express = require('express') ; const app = express() ; - +const { DateTime } = require('luxon') ; // Postgres client const { Client } = require('pg') ; + +// Auxiliar functions +function convertDate(date) { + return DateTime + .fromJSDate(date, { zone: 'utc' }) + .setZone('America/Sao_Paulo') + .toFormat('dd/MM/yyyy HH:mm:ss') ; +} +//############################################################################## + + + // Postgres queries ############################################################ const xml_query = ` SELECT @@ -102,6 +114,8 @@ const reports_query = ` AS rptrecord ON report.serial = rptrecord.serial + ORDER BY + @@@@ ` ; const details_query = ` @@ -146,10 +160,32 @@ app.get('/', (req, res) => { // Reports list app.get('/reports', (req, res) => { - pgClient.query(reports_query, (err, result) => { + const { sort } = req.query ; + + var sortStr = "" ; + switch (sort) { + case "maxdate": + sortStr = "maxdate ASC" ; + break ; + case "mindate": + sortStr = "mindate ASC" ; + break ; + case "-mindate": + sortStr = "mindate DESC" ; + break ; + default: + sortStr = "maxdate DESC" ; + } + + pgClient.query(reports_query.replace("@@@@", sortStr), (err, result) => { if (err) { console.log("ERROR: Unable to run query") ; } else { + // Converting results + result["rows"].forEach((row, index) => { + row["maxdate"] = convertDate(row["maxdate"]) ; + row["mindate"] = convertDate(row["mindate"]) ; + }) ; res.send(result["rows"]) ; } }) ; @@ -157,8 +193,13 @@ app.get('/reports', (req, res) => { //############################################################################## // Individual report details -app.get('/reports/details/:serial', (req, res) => { - pgClient.query(details_query, [req.params.serial], (err, result) => { +app.get('/reports/details', (req, res) => { + const { serial } = req.query ; + if (! serial) { + res.send("No serial specified...") ; + return + } + pgClient.query(details_query, [serial], (err, result) => { if (err) { console.log("ERROR: Unable to run query") ; console.log(err) ; @@ -202,9 +243,8 @@ app.get('/reports/:serial.xml', (req, res) => { //############################################################################## app.get('/test', (req, res) => { - pgClient.query("SELECT * FROM report WHERE serial = 100000000", (err, result) => { - res.send(result) ; - }) ; + const { var1, var2, var3 } = req.query + res.send(`${var1} ${var2} ${var3}`) ; }) ; app.listen(3001, () => { View it on GitLab: https://gitlab.c3sl.ufpr.br/root/dmarc-report/-/commit/1c73d465452be71c0d467... -- View it on GitLab: https://gitlab.c3sl.ufpr.br/root/dmarc-report/-/commit/1c73d465452be71c0d467... You're receiving this email because of your account on gitlab.c3sl.ufpr.br.
participantes (1)
-
Guiusepe (@godp21)