[MVPTN-91] feat(Crud): Criação do endpoint que retorna todos os estados brasileiros
This commit is contained in:
parent
2b4596818b
commit
729c374a1c
7 changed files with 160 additions and 0 deletions
24
packages/v1/administrativo/actions/g_uf/g_uf_index_action.py
Normal file
24
packages/v1/administrativo/actions/g_uf/g_uf_index_action.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
from abstracts.action import BaseAction
|
||||
from packages.v1.administrativo.repositories.g_uf.g_uf_index_repository import IndexRepository
|
||||
|
||||
class IndexAction(BaseAction):
|
||||
"""
|
||||
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||
de listagem de todos os registros na tabela G_UF.
|
||||
"""
|
||||
|
||||
def execute(self):
|
||||
"""
|
||||
Executa a operação de listagem no banco de dados.
|
||||
|
||||
Returns:
|
||||
A lista de todos os registros.
|
||||
"""
|
||||
# Instanciamento do repositório
|
||||
index_repository = IndexRepository()
|
||||
|
||||
# Execução do repositório
|
||||
response = index_repository.execute()
|
||||
|
||||
# Retorno da informação
|
||||
return response
|
||||
32
packages/v1/administrativo/controllers/g_uf_controller.py
Normal file
32
packages/v1/administrativo/controllers/g_uf_controller.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||
from packages.v1.administrativo.schemas.g_uf_schema import (
|
||||
GUfSchema
|
||||
)
|
||||
|
||||
class GUfController:
|
||||
|
||||
def __init__(self):
|
||||
# Action responsável por carregar as services de acordo com o estado
|
||||
self.dynamic_import = DynamicImport()
|
||||
|
||||
# Define o pacote que deve ser carregado
|
||||
self.dynamic_import.set_package("administrativo")
|
||||
|
||||
# Define a tabela que o pacote pertence
|
||||
self.dynamic_import.set_table("g_uf")
|
||||
pass
|
||||
|
||||
# Lista todos os registros de g_uf
|
||||
def index(self):
|
||||
|
||||
# Importação da classe desejada
|
||||
indexService = self.dynamic_import.service("g_uf_index_service", "IndexService")
|
||||
|
||||
# Instância da classe service
|
||||
self.indexService = indexService()
|
||||
|
||||
# Lista todos os registros de g_uf
|
||||
return {
|
||||
'message': 'Registros de g_uf localizados com sucesso',
|
||||
'data': self.indexService.execute()
|
||||
}
|
||||
25
packages/v1/administrativo/endpoints/g_uf_endpoint.py
Normal file
25
packages/v1/administrativo/endpoints/g_uf_endpoint.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Importação de bibliotecas
|
||||
from typing import Optional
|
||||
from fastapi import APIRouter, Body, Depends, status
|
||||
from actions.jwt.get_current_user import get_current_user
|
||||
from packages.v1.administrativo.controllers.g_uf_controller import GUfController
|
||||
from packages.v1.administrativo.schemas.g_uf_schema import GUfSchema
|
||||
|
||||
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
||||
router = APIRouter()
|
||||
|
||||
# Instanciamento do controller desejado
|
||||
g_uf_controller = GUfController()
|
||||
|
||||
# Lista todos os registros de uf
|
||||
@router.get('/',
|
||||
status_code=status.HTTP_200_OK,
|
||||
summary='Lista todos os registros de UF cadastrados',
|
||||
response_description='Lista todos os registros de UF cadastrados')
|
||||
async def index(current_user: dict = Depends(get_current_user)):
|
||||
|
||||
# Busca todos os registros de uf cadastrados
|
||||
response = g_uf_controller.index()
|
||||
|
||||
# Retorna os dados localizados
|
||||
return response
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
from abstracts.repository import BaseRepository
|
||||
|
||||
class IndexRepository(BaseRepository):
|
||||
"""
|
||||
Repositório para a operação de listagem de todos os registros
|
||||
na tabela G_UF.
|
||||
"""
|
||||
|
||||
def execute(self):
|
||||
"""
|
||||
Executa a consulta SQL para buscar todos os registros.
|
||||
|
||||
Returns:
|
||||
Uma lista de dicionários contendo os dados dos registros.
|
||||
"""
|
||||
# Montagem do SQL
|
||||
sql = """ SELECT * FROM G_UF """
|
||||
|
||||
# Execução do sql
|
||||
response = self.fetch_all(sql)
|
||||
|
||||
# Retorna os dados localizados
|
||||
return response
|
||||
18
packages/v1/administrativo/schemas/g_uf_schema.py
Normal file
18
packages/v1/administrativo/schemas/g_uf_schema.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
from pydantic import BaseModel, field_validator, model_validator
|
||||
from fastapi import HTTPException, status
|
||||
from typing import Optional
|
||||
|
||||
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
|
||||
from actions.validations.text import Text
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema base
|
||||
# ----------------------------------------------------
|
||||
class GUfSchema(BaseModel):
|
||||
g_uf_id: Optional[int] = None
|
||||
sigla: Optional[str] = None
|
||||
nome: Optional[str] = None
|
||||
cod_uf_ibge: Optional[str] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
from fastapi import HTTPException, status
|
||||
from packages.v1.administrativo.actions.g_uf.g_uf_index_action import IndexAction
|
||||
|
||||
class IndexService:
|
||||
"""
|
||||
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||
de listagem de registros na tabela G_UF.
|
||||
"""
|
||||
|
||||
def execute(self):
|
||||
"""
|
||||
Executa a operação de busca de todos os registros no banco de dados.
|
||||
|
||||
Returns:
|
||||
A lista de registros encontrados.
|
||||
"""
|
||||
# Instanciamento da ação
|
||||
index_action = IndexAction()
|
||||
|
||||
# Executa a busca de todas as ações
|
||||
data = index_action.execute()
|
||||
|
||||
# Verifica se foram localizados registros
|
||||
if not data:
|
||||
# Retorna uma exceção
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail='Não foi possível localizar os registros de UF'
|
||||
)
|
||||
|
||||
# Retorna as informações localizadas
|
||||
return data
|
||||
|
|
@ -20,6 +20,7 @@ from packages.v1.administrativo.endpoints import t_minuta_endpoint
|
|||
from packages.v1.administrativo.endpoints import g_tb_bairro_endpoint
|
||||
from packages.v1.administrativo.endpoints import g_tb_tipologradouro_endpoint
|
||||
from packages.v1.administrativo.endpoints import g_cidade_endpoint
|
||||
from packages.v1.administrativo.endpoints import g_uf_endpoint
|
||||
|
||||
# Cria uma instância do APIRouter que vai agregar todas as rotas da API
|
||||
api_router = APIRouter()
|
||||
|
|
@ -117,4 +118,9 @@ api_router.include_router(
|
|||
# Inclui as rotas de g_cidade
|
||||
api_router.include_router(
|
||||
g_cidade_endpoint.router, prefix="/administrativo/g_cidade", tags=["Cidades"]
|
||||
)
|
||||
|
||||
# Inclui as rotas de g_uf
|
||||
api_router.include_router(
|
||||
g_uf_endpoint.router, prefix="/administrativo/g_uf", tags=["Estados"]
|
||||
)
|
||||
Loading…
Add table
Reference in a new issue