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
57 changes: 49 additions & 8 deletions mapcon/pages/api/mapcon/crawling_news.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,63 @@
import type { NextApiRequest, NextApiResponse } from 'next';
// Define os tipos para requisição e resposta da API do Next.js
import type { NextApiRequest, NextApiResponse } from 'next'

// Importa funções genéricas de CRUD para o banco de dados
import base from '../../../lib/back/base_query'
import { LogRequest } from './_helper';

// Importa função auxiliar para registrar logs das requisições (útil para auditoria e debug)
import { LogRequest } from './_helper'

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

// Exporta a função principal da API, que responde dinamicamente de acordo com o método HTTP
export default async (req: NextApiRequest, res: NextApiResponse) => {

// Obtém a sessão do usuário logado, se houver
const session = await getServerSession(req, res, { /* options */ });

// Verifica se o usuário está autenticado
if (session) {

// Loga a requisição recebida (arquivo atual e detalhes da requisição)
LogRequest(__filename, req);

// --- TRATAMENTO DAS REQUISIÇÕES ---

// Se for uma requisição GET com ID (no caso, a URL da notícia), retorna uma notícia específica
if (req.method == 'GET' && req.query.id) {
res.status(200).json(await base.getModel('crawling.crawling_news', { 'url': req.query.id }))
res.status(200).json(await base.getModel(
'crawling.crawling_news', // Tabela do schema crawling no banco
{ 'url': req.query.id } // Condição: busca pela URL
))

// Se for uma requisição GET sem ID, retorna várias notícias com base nos filtros (se houver)
} else if (req.method == 'GET') {
res.status(200).json(await base.getModels('crawling.crawling_news', req.query))
res.status(200).json(await base.getModels(
'crawling.crawling_news', // Nome da tabela
req.query // Parâmetros de filtro passados na URL
))

// Se for uma requisição PUT, atualiza os dados de uma notícia existente
} else if (req.method == 'PUT') {
res.status(200).json(await base.updateModel('crawling.crawling_news',{ 'url': req.body.url },req.body))
} else if (req.method == 'DELETE'){
res.status(200).json(await base.deleteModel('crawling.crawling_news',{ 'url': req.body.url }))
res.status(200).json(await base.updateModel(
'crawling.crawling_news', // Nome da tabela
{ 'url': req.body.url }, // Condição para atualização (URL)
req.body // Novos dados da notícia
))

// Se for uma requisição DELETE, remove uma notícia específica do banco
} else if (req.method == 'DELETE') {
res.status(200).json(await base.deleteModel(
'crawling.crawling_news', // Nome da tabela
{ 'url': req.body.url } // Condição para exclusão (URL)
))
}

// Se o usuário não estiver autenticado, retorna erro 401 (acesso negado)
} else {
res.status(401).json({ "Acesso Negado": "Você não possui permissão para acessar esses dados." })
res.status(401).json({
"Acesso Negado": "Você não possui permissão para acessar esses dados."
})
}
}