Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 30 additions & 7 deletions mapcon/pages/api/mapcon/get_protestos_proximos.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,41 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { getServerSession } from "next-auth"
// Importa tipos para requisição e resposta no Next.js

import { getServerSession } from "next-auth";
// Importa função para obter sessão do usuário autenticado

import db from '../../../lib/back/db';
// Importa instância para acesso ao banco de dados (Knex ou similar)

import { LogRequest } from './_helper';
// Importa função para logar detalhes da requisição para depuração

export default async (req: NextApiRequest, res: NextApiResponse) => {
// Pega a sessão do usuário para verificar autenticação
const session = await getServerSession(req, res, { /* options */ });
if (session) {
LogRequest(__filename, req);

if (session) { // Se o usuário está autenticado
LogRequest(__filename, req); // Registra informações da requisição no log

// Se o método for GET e houver o parâmetro 'data' na query
if (req.method == 'GET' && req.query.data) {
const query = await db.raw("SELECT num_seq_protesto,to_char(data_protesto,'DD/MM/YYYY') as data_protesto, tema_protesto FROM protesto ORDER BY ABS(data_protesto::date - TO_DATE(?,'YYYY-MM-DD')) LIMIT 10;", [req.query.data]);
res.status(200).json(query.rows)
// Executa consulta SQL raw para buscar até 10 protestos
// mais próximos da data informada (req.query.data)
const query = await db.raw(
"SELECT num_seq_protesto, to_char(data_protesto,'DD/MM/YYYY') as data_protesto, tema_protesto \
FROM protesto \
ORDER BY ABS(data_protesto::date - TO_DATE(?,'YYYY-MM-DD')) \
LIMIT 10;",
[req.query.data] // Parâmetro para a query segura
);

// Retorna o resultado da consulta (array de protestos)
res.status(200).json(query.rows);
}
} else {
res.status(401).json({ "Acesso Negado": "Você não possui permissão para acessar esses dados." })
// Caso o usuário não esteja autenticado, retorna erro 401
res.status(401).json({
"Acesso Negado": "Você não possui permissão para acessar esses dados."
});
}

}