[MVPTN-103] fix(SQL): Ajusta a listagem por SISTEMA_ID

This commit is contained in:
Keven Willian Pereira de Souza 2025-10-14 08:06:04 -03:00
parent 642f2ed826
commit 17a1146f04
6 changed files with 128 additions and 1 deletions

View file

@ -0,0 +1,25 @@
from abstracts.action import BaseAction
from api.packages.v1.administrativo.repositories.g_natureza.g_natureza_index_by_sistema_id_repository import IndexBySistemaIdRepository
from api.packages.v1.administrativo.schemas.g_natureza_schema import GNaturezaSistemaIdSchema
class IndexActionBySistemaId(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_natureza.
"""
def execute(self, g_natureza_sistema_id_schema: GNaturezaSistemaIdSchema):
"""
Executa a operação de listagem no banco de dados.
Returns:
A lista de todos os registros.
"""
# Instanciamento do repositório
index_repository = IndexBySistemaIdRepository()
# Execução do repositório
response = index_repository.execute(g_natureza_sistema_id_schema)
# Retorno da informação
return response

View file

@ -1,7 +1,7 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.administrativo.schemas.g_natureza_schema import (
GNaturezaSchema,
GNaturezaSaveSchema,
GNaturezaSistemaIdSchema,
GNaturezaUpdateSchema,
GNaturezaIdSchema,
GNaturezaDescricaoSchema
@ -34,6 +34,21 @@ class GNaturezaController:
'message': 'Registros de natureza localizados com sucesso',
'data': self.indexService.execute()
}
# Lista todos os registros de natureza
def indexBySistemaId(self, g_natureza_sistema_id_schema: GNaturezaSistemaIdSchema):
# Importação da classe desejada
indexService = self.dynamic_import.service("g_natureza_index_by_sistema_id_service", "IndexBySistemaIdService")
# Instância da classe service
self.indexService = indexService()
# Lista todos os registros de natureza
return {
'message': 'Registros de natureza localizados com sucesso',
'data': self.indexService.execute(g_natureza_sistema_id_schema)
}
# Busca um registro de natureza específico pelo ID

View file

@ -6,6 +6,7 @@ from packages.v1.administrativo.controllers.g_natureza_controller import GNature
from packages.v1.administrativo.schemas.g_natureza_schema import (
GNaturezaSchema,
GNaturezaSaveSchema,
GNaturezaSistemaIdSchema,
GNaturezaUpdateSchema,
GNaturezaIdSchema
)
@ -29,6 +30,25 @@ async def index(current_user: dict = Depends(get_current_user)):
# Retorna os dados localizados
return response
# Lista todos os registros de natureza
@router.get(
"/sistema/{sistema_id}",
status_code=status.HTTP_200_OK,
summary="Lista todos os registros de natureza cadastrados",
response_description="Lista todos os registros de natureza cadastrados"
)
async def index_by_sistema_id(
sistema_id: int,
current_user: dict = Depends(get_current_user)
):
# Cria o schema com os dados recebidos
natureza_schema = GNaturezaSistemaIdSchema(sistema_id=sistema_id)
# Chama o controller (sem await)
response = g_natureza_controller.indexBySistemaId(natureza_schema)
# Retorna os dados
return response
# Localiza um registro de natureza pela descrição
@router.get('/descricao',

View file

@ -0,0 +1,29 @@
from abstracts.repository import BaseRepository
from api.packages.v1.administrativo.schemas.g_natureza_schema import GNaturezaSistemaIdSchema
class IndexBySistemaIdRepository(BaseRepository):
"""
Repositório para a operação de listagem de todos os registros
na tabela g_natureza.
"""
def execute(self, g_natureza_sistema_id_schema: GNaturezaSistemaIdSchema):
"""
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_NATUREZA WHERE sistema_id = :sistema_id"""
# Montagem de parÂmetros
params = {
'sistema_id': g_natureza_sistema_id_schema.sistema_id
}
# Execução do sql
response = self.fetch_all(sql, params)
# Retorna os dados localizados
return response

View file

@ -26,6 +26,11 @@ class GNaturezaSchema(BaseModel):
class GNaturezaIdSchema(BaseModel):
natureza_id: int
# ----------------------------------------------------
# Schema para localizar uma NATUREZA especifica pelo ID (GET)
# ----------------------------------------------------
class GNaturezaSistemaIdSchema(BaseModel):
sistema_id: int
# ----------------------------------------------------
# Schema para localizar uma NATUREZA especifica pela descrição (GET)

View file

@ -0,0 +1,33 @@
from fastapi import HTTPException, status
from api.packages.v1.administrativo.actions.g_natureza.g_natureza_index_by_sistema_id_action import IndexActionBySistemaId
from api.packages.v1.administrativo.schemas.g_natureza_schema import GNaturezaSistemaIdSchema
class IndexBySistemaIdService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de listagem de registros na tabela g_natureza.
"""
def execute(self, g_natureza_sistema_id_schema: GNaturezaSistemaIdSchema):
"""
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 = IndexActionBySistemaId()
# Executa a busca de todas as ações
data = index_action.execute(g_natureza_sistema_id_schema)
# 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 Natureza'
)
# Retorna as informações localizadas
return data