[MVPTN-106] feat(Endpoint): Criado o novo endpoint para retornar g_marcacao_tipo com aplicação de filtro
This commit is contained in:
parent
4d5ed3c027
commit
ebeb5e4827
6 changed files with 169 additions and 5 deletions
|
|
@ -0,0 +1,31 @@
|
|||
from abstracts.action import BaseAction
|
||||
# Ajuste do schema de entrada
|
||||
from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import GMarcacaoTipoGrupoSchema
|
||||
# Ajuste do repositório
|
||||
from packages.v1.administrativo.repositories.g_marcacao_tipo.g_marcacao_tipo_get_by_grupo_repository import GetByGrupoRepository
|
||||
|
||||
|
||||
class GetByGrupoAction(BaseAction):
|
||||
"""
|
||||
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||
de busca de um registro na tabela G_MARCACAO_TIPO por filtro.
|
||||
"""
|
||||
|
||||
def execute(self, marcacao_tipo_schema: GMarcacaoTipoGrupoSchema):
|
||||
"""
|
||||
Executa a operação de busca no banco de dados.
|
||||
|
||||
Args:
|
||||
marcacao_tipo_schema (GMarcacaoTipoGrupoSchema): O esquema com os filtros a serem buscados.
|
||||
|
||||
Returns:
|
||||
O registro encontrado ou None.
|
||||
"""
|
||||
# Instanciamento do repositório
|
||||
show_repository = GetByGrupoRepository()
|
||||
|
||||
# Execução do repositório
|
||||
response = show_repository.execute(marcacao_tipo_schema)
|
||||
|
||||
# Retorno da informação
|
||||
return response
|
||||
|
|
@ -4,7 +4,8 @@ from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import (
|
|||
GMarcacaoTipoSaveSchema,
|
||||
GMarcacaoTipoUpdateSchema,
|
||||
GMarcacaoTipoIdSchema,
|
||||
GMarcacaoTipoDescricaoSchema
|
||||
GMarcacaoTipoDescricaoSchema,
|
||||
GMarcacaoTipoGrupoSchema
|
||||
)
|
||||
|
||||
class GMarcacaoTipoController:
|
||||
|
|
@ -110,4 +111,20 @@ class GMarcacaoTipoController:
|
|||
return {
|
||||
'message': 'Registro de marcação tipo removido com sucesso',
|
||||
'data': self.delete_service.execute(marcacao_tipo_schema)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Busca um registro de marcacao tipo por filtro
|
||||
def get_by_grupo(self, marcacao_tipo_schema: GMarcacaoTipoGrupoSchema):
|
||||
|
||||
#Importação da classe desejada
|
||||
grupo_service = self.dynamic_import.service('g_marcacao_tipo_get_by_grupo_service', 'GetByGrupoService')
|
||||
|
||||
# Instância da classe desejada
|
||||
self.grupo_service = grupo_service()
|
||||
|
||||
# Busca e retorna o registro de marcacao tipo desejado
|
||||
return {
|
||||
'message': 'Registro de marcação tipo localizado com sucesso',
|
||||
'data': self.grupo_service.execute(marcacao_tipo_schema, True)
|
||||
}
|
||||
|
|
@ -7,7 +7,8 @@ from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import (
|
|||
GMarcacaoTipoSchema,
|
||||
GMarcacaoTipoSaveSchema,
|
||||
GMarcacaoTipoUpdateSchema,
|
||||
GMarcacaoTipoIdSchema
|
||||
GMarcacaoTipoIdSchema,
|
||||
GMarcacaoTipoGrupoSchema
|
||||
)
|
||||
|
||||
# Inicializa o roteador para as rotas do tipo de marcação
|
||||
|
|
@ -47,6 +48,23 @@ async def get_by_descricao(descricao : str, current_user: dict = Depends(get_cur
|
|||
return response
|
||||
|
||||
|
||||
# Localiza um registro de marcação tipo passando os filtros de consulta
|
||||
@router.get('/grupo',
|
||||
status_code=status.HTTP_200_OK,
|
||||
summary='Busca um registro de marcação tipo em específico pela descrição',
|
||||
response_description='Busca um registro de marcação tipo em específico')
|
||||
async def get_by_descricao(grupo : str, sistema_id : int, situacao : str, current_user: dict = Depends(get_current_user)):
|
||||
|
||||
# Cria o schema com os dados recebidos. Nota: Assumindo que GMarcacaoTipoSchema pode ser usado para descrição.
|
||||
marcacao_tipo_schema = GMarcacaoTipoGrupoSchema(grupo=grupo, sistema_id=sistema_id, situacao=situacao)
|
||||
|
||||
# Busca um registro de marcação tipo específico pela descrição
|
||||
response = g_marcacao_tipo_controller.get_by_grupo(marcacao_tipo_schema)
|
||||
|
||||
# Retorna os dados localizados
|
||||
return response
|
||||
|
||||
|
||||
# Localiza um registro de marcação tipo pelo ID
|
||||
@router.get('/{marcacao_tipo_id}',
|
||||
status_code=status.HTTP_200_OK,
|
||||
|
|
@ -63,7 +81,6 @@ async def show(marcacao_tipo_id : int, current_user: dict = Depends(get_current_
|
|||
# Retorna os dados localizados
|
||||
return response
|
||||
|
||||
|
||||
# Cadastro de registro de marcação tipo
|
||||
@router.post('/',
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
from abstracts.repository import BaseRepository
|
||||
# O schema de entrada deve ser o de descrição para a tabela G_MARCACAO_TIPO
|
||||
from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import GMarcacaoTipoGrupoSchema
|
||||
|
||||
class GetByGrupoRepository(BaseRepository):
|
||||
"""
|
||||
Repositório para a operação de busca de um registro na tabela
|
||||
G_MARCACAO_TIPO por descrição.
|
||||
"""
|
||||
|
||||
def execute(self, marcacao_tipo_schema: GMarcacaoTipoGrupoSchema):
|
||||
"""
|
||||
Executa a consulta SQL para buscar um registro pela descrição.
|
||||
|
||||
Args:
|
||||
marcacao_tipo_schema (GMarcacaoTipoGrupoSchema): O esquema com os filtros a serem consultados.
|
||||
|
||||
Returns:
|
||||
Um dicionário contendo os dados do registro ou None se não for encontrado.
|
||||
"""
|
||||
# Montagem do SQL
|
||||
sql = """ SELECT MARCACAO_TIPO_ID,
|
||||
DESCRICAO,
|
||||
NOME,
|
||||
GRUPO,
|
||||
SITUACAO,
|
||||
SISTEMA_ID,
|
||||
GRUPO_TIPO,
|
||||
TIPO_QUALIFICACAO,
|
||||
CONDICAO_SQL,
|
||||
SEPARADOR_1,
|
||||
SEPARADOR_2,
|
||||
SEPARADOR_3,
|
||||
TIPO_VALOR,
|
||||
ATUALIZAR,
|
||||
PROTEGIDA,
|
||||
ATIVAR_SEPARADOR,
|
||||
SQL_COMPLETO
|
||||
FROM G_MARCACAO_TIPO
|
||||
WHERE GRUPO = :grupo AND
|
||||
SISTEMA_ID = :sistema_id AND
|
||||
SITUACAO = :situacao """
|
||||
|
||||
# Preenchimento de parâmetros
|
||||
params = {
|
||||
'grupo': marcacao_tipo_schema.grupo,
|
||||
'sistema_id': marcacao_tipo_schema.sistema_id,
|
||||
'situacao': marcacao_tipo_schema.situacao
|
||||
}
|
||||
|
||||
# Execução do sql
|
||||
return self.fetch_all(sql, params)
|
||||
|
|
@ -54,7 +54,16 @@ class GMarcacaoTipoIdSchema(BaseModel):
|
|||
# Schema para localizar um registro pela descrição (GET)
|
||||
# ----------------------------------------------------
|
||||
class GMarcacaoTipoDescricaoSchema(BaseModel):
|
||||
descricao: str
|
||||
descricao: str
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema para localizar um registro por filtro (GET)
|
||||
# ----------------------------------------------------
|
||||
class GMarcacaoTipoGrupoSchema(BaseModel):
|
||||
grupo: str
|
||||
sistema_id: int
|
||||
situacao: str
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
from fastapi import HTTPException, status
|
||||
from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import GMarcacaoTipoGrupoSchema
|
||||
from packages.v1.administrativo.actions.g_marcacao_tipo.g_marcacao_tipo_get_by_grupo_action import GetByGrupoAction
|
||||
|
||||
class GetByGrupoService:
|
||||
"""
|
||||
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||
de busca de um registro na tabela G_MARCACAO_TIPO pela sua descrição.
|
||||
"""
|
||||
|
||||
def execute(self, marcacao_tipo_schema: GMarcacaoTipoGrupoSchema, messageValidate: bool):
|
||||
"""
|
||||
Executa a operação de busca no banco de dados.
|
||||
|
||||
Args:
|
||||
marcacao_tipo_schema (GMarcacaoTipoGrupoSchema): O esquema com a descrição a ser buscada.
|
||||
messageValidate (bool): Se True, lança uma exceção HTTP caso o registro não seja encontrado.
|
||||
|
||||
Returns:
|
||||
O registro encontrado ou None.
|
||||
"""
|
||||
# Instanciamento da ação
|
||||
show_action = GetByGrupoAction()
|
||||
|
||||
# Executa a ação em questão
|
||||
data = show_action.execute(marcacao_tipo_schema)
|
||||
|
||||
if messageValidate:
|
||||
|
||||
if not data:
|
||||
# Retorna uma exceção
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail='Não foi possível localizar o registro de G_MARCACAO_TIPO'
|
||||
)
|
||||
|
||||
# Retorno da informação
|
||||
return data
|
||||
Loading…
Add table
Reference in a new issue