saas_api/packages/v1/administrativo/endpoints/t_pessoa_endpoint.py

135 lines
3.9 KiB
Python

# Importação de bibliotecas
from fastapi import APIRouter, Depends, status
from actions.jwt.get_current_user import get_current_user
from packages.v1.administrativo.controllers.t_pessoa_controller import TPessoaController
from packages.v1.administrativo.schemas.t_pessoa_schema import (
TPessoaIdSchema,
TPessoaNameSchema,
TPessoaSaveSchema,
TPessoaUpdateSchema,
TPessoaTipoSchema,
)
# Inicializa o roteador para as rotas do regime de bens
router = APIRouter()
# Instânciamento do controller desejado
t_pessoa_controller = TPessoaController()
# Lista todos as pessoas
@router.get(
"/tipo/{pessoa_tipo}",
status_code=status.HTTP_200_OK,
summary="Lista todos as pessoas cadastrados",
response_description="Lista todos as pessoas cadastrados",
)
async def index(pessoa_tipo: str, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
t_pessoa_tipo_schema = TPessoaTipoSchema(pessoa_tipo=pessoa_tipo)
# Busca todos as pessoas cadastrados
response = t_pessoa_controller.index(t_pessoa_tipo_schema)
# Retorna os dados localizados
return response
# Localiza um regime de bens pela descrição
@router.get(
"/nome",
status_code=status.HTTP_200_OK,
summary="Busca um registro em específico pelo nome",
response_description="Busca um registro em específico",
)
async def get_by_nome(nome: str, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
t_pessoa_nome_schema = TPessoaNameSchema(nome=nome)
# Busca um regime de bens específico pela descrição
response = t_pessoa_controller.get_by_nome(t_pessoa_nome_schema)
# Retorna os dados localizados
return response
# Localiza um regime de bens pelo ID
@router.get(
"/{pessoa_id}",
status_code=status.HTTP_200_OK,
summary="Busca um registro em específico pelo ID da pessoa",
response_description="Busca um registro em específico",
)
async def show(pessoa_id: int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
t_pessoa_id_schema = TPessoaIdSchema(pessoa_id=pessoa_id)
# Busca um regime de bens específico pelo ID
response = t_pessoa_controller.show(t_pessoa_id_schema)
# Retorna os dados localizados
return response
# Cadastro de regime de bens
@router.post(
"/",
status_code=status.HTTP_201_CREATED,
summary="Cadastra um regime de bens",
response_description="Cadastra um regime de bens",
)
async def save(
t_pessoa_save_schema: TPessoaSaveSchema,
current_user: dict = Depends(get_current_user),
):
# Efetua o cadastro no banco de dados
response = t_pessoa_controller.save(t_pessoa_save_schema)
# Retorna os dados localizados
return response
# Atualiza os dados de um regime de bens
@router.put(
"/{pessoa_id}",
status_code=status.HTTP_200_OK,
summary="Atualiza um regime de bens",
response_description="Atualiza um regime de bens",
)
async def update(
pessoa_id: int,
t_pessoa_update_schema: TPessoaUpdateSchema,
current_user: dict = Depends(get_current_user),
):
# Adiciona o ID do registro ao schema
t_pessoa_update_schema.pessoa_id = pessoa_id
# Efetua a atualização dos dados
response = t_pessoa_controller.update(t_pessoa_update_schema)
# Retorna os dados localizados
return response
# Exclui um determinado regime de bens
@router.delete(
"/{pessoa_id}",
status_code=status.HTTP_200_OK,
summary="Remove um regime de bens",
response_description="Remove um regime de bens",
)
async def delete(pessoa_id: int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
t_pessoa_id_schema = TPessoaIdSchema(pessoa_id=pessoa_id)
# Efetua a exclusão do regime de bens
response = t_pessoa_controller.delete(t_pessoa_id_schema)
# Retorna os dados localizados
return response