From 8385ec90dd2996cd84420ba0e113a21344616c9a Mon Sep 17 00:00:00 2001 From: GUSTAVO PIZATTO Date: Tue, 5 Aug 2025 08:14:52 -0300 Subject: [PATCH] Update bairro.ts Comentado --- mapcon/pages/api/mapcon/bairro.ts | 62 +++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 8 deletions(-) diff --git a/mapcon/pages/api/mapcon/bairro.ts b/mapcon/pages/api/mapcon/bairro.ts index 12bee24..4c46cd0 100644 --- a/mapcon/pages/api/mapcon/bairro.ts +++ b/mapcon/pages/api/mapcon/bairro.ts @@ -1,24 +1,70 @@ +// Tipagem das requisições e respostas da API do Next.js import type { NextApiRequest, NextApiResponse } from 'next'; + +// Função para obter a sessão do usuário autenticado (via next-auth) import { getServerSession } from "next-auth" + +// Importa o módulo com funções reutilizáveis para acessar o banco (CRUD genérico) import base from '../../../lib/back/base_query' + +// Importa função auxiliar para logar os dados da requisição no console import { LogRequest } from './_helper'; +// Exporta a função padrão que trata a rota da API (assíncrona porque usará await) export default async (req: NextApiRequest, res: NextApiResponse) => { + + // Recupera a sessão do usuário autenticado const session = await getServerSession(req, res, { /* options */ }); + + // Se a sessão existe (usuário autenticado)... if (session) { + + // Exibe no console as informações da requisição recebida LogRequest(__filename, req); + + // Se for uma requisição GET com um ID específico informado via query string... if (req.method == 'GET' && req.query.id) { - res.status(200).json(await base.getModel('bairro', { 'num_seq_bairro': req.query.id })) + // Retorna apenas o bairro que tem o ID correspondente + res.status(200).json(await base.getModel( + 'bairro', + { 'num_seq_bairro': req.query.id } + )) + + // Se for uma requisição GET **sem ID**, retorna todos os bairros com JOIN na cidade } else if (req.method == 'GET') { - res.status(200).json(await base.getModels('bairro', req.query,'INNER JOIN cidade ON bairro.cidade_num_seq_cidade = cidade.num_seq_cidade')) + res.status(200).json(await base.getModels( + 'bairro', + req.query, // filtros, ordenação ou paginação + 'INNER JOIN cidade ON bairro.cidade_num_seq_cidade = cidade.num_seq_cidade' // traz dados da cidade associada + )) + + // Se for uma requisição POST, adiciona um novo bairro no banco } else if (req.method == 'POST') { - res.status(200).json(await base.addModel('bairro', req.body)) - } else if (req.method == 'PUT'){ - res.status(200).json(await base.updateModel('bairro',{ 'num_seq_bairro': req.body.num_seq_bairro },req.body)) - } else if (req.method == 'DELETE'){ - res.status(200).json(await base.deleteModel('bairro',{ 'num_seq_bairro': req.body.num_seq_bairro })) + res.status(200).json(await base.addModel( + 'bairro', + req.body // dados enviados no corpo da requisição + )) + + // Se for uma requisição PUT, atualiza os dados de um bairro existente + } else if (req.method == 'PUT') { + res.status(200).json(await base.updateModel( + 'bairro', + { 'num_seq_bairro': req.body.num_seq_bairro }, // critério para encontrar o registro + req.body // dados atualizados + )) + + // Se for uma requisição DELETE, remove um bairro específico + } else if (req.method == 'DELETE') { + res.status(200).json(await base.deleteModel( + 'bairro', + { 'num_seq_bairro': req.body.num_seq_bairro } // critério de exclusão + )) } + + // Se o usuário **não** estiver autenticado, retorna erro 401 (não autorizado) } 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." + }) } }