MirrorAPI/packages/v1/administrativo/endpoints/ato_documento_endpoint.py
2025-11-03 15:18:26 -03:00

133 lines
3.9 KiB
Python

# Importação de bibliotecas
from typing import Optional
from fastapi import APIRouter, Depends, status
from actions.jwt.get_current_user import get_current_user
from packages.v1.administrativo.controllers.ato_documento_controller import (
AtoDocumentoController,
)
from packages.v1.administrativo.schemas.ato_documento_schema import (
AtoDocumentoSchema,
AtoDocumentoSaveSchema,
AtoDocumentoUpdateSchema,
AtoDocumentoIdSchema,
)
# Inicializa o roteador para as rotas de ato_documento
router = APIRouter()
# Instânciamento do controller desejado
ato_documento_controller = AtoDocumentoController()
# Lista todos os documentos
@router.get(
"/",
status_code=status.HTTP_200_OK,
summary="Lista todos os documentos cadastrados",
response_description="Lista todos os documentos cadastrados",
)
async def index(current_user: dict = Depends(get_current_user)):
# Busca todos os documentos cadastrados
response = ato_documento_controller.index()
# Retorna os dados localizados
return response
# Localiza um documento pelo ato_principal_id
@router.get(
"/ato_principal/{ato_principal_id}",
status_code=status.HTTP_200_OK,
summary="Busca um registro em especifico pelo ID do ato principal",
response_description="Busca um registro em especifico",
)
async def showAtoPrincipal(
ato_principal_id: int, current_user: dict = Depends(get_current_user)
):
# Cria o schema com os dados recebidos
ato_documento_schema = AtoDocumentoSchema(ato_principal_id=ato_principal_id)
# Busca um documento especifico pelo ID
response = ato_documento_controller.showAtoPrincipal(ato_documento_schema)
# Retorna os dados localizados
return response
# Localiza um documento pelo ID
@router.get(
"/{ato_documento_id}",
status_code=status.HTTP_200_OK,
summary="Busca um registro em especifico pelo ID do documento",
response_description="Busca um registro em especifico",
)
async def show(ato_documento_id: int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
ato_documento_schema = AtoDocumentoSchema(ato_documento_id=ato_documento_id)
# Busca um documento especifico pelo ID
response = ato_documento_controller.show(ato_documento_schema)
# Retorna os dados localizados
return response
# Cadastro de documentos
@router.post(
"/",
status_code=status.HTTP_200_OK,
summary="Cadastra um documento",
response_description="Cadastra um documento",
)
async def save(
ato_documento_schema: AtoDocumentoSaveSchema,
current_user: dict = Depends(get_current_user),
):
# Efetua o cadastro do documento junto ao banco de dados
response = ato_documento_controller.save(ato_documento_schema)
# Retorna os dados localizados
return response
# Atualiza os dados de documento
@router.put(
"/{ato_documento_id}",
status_code=status.HTTP_200_OK,
summary="Atualiza um documento",
response_description="Atualiza um documento",
)
async def update(
ato_documento_id: int,
ato_documento_schema: AtoDocumentoUpdateSchema,
current_user: dict = Depends(get_current_user),
):
# Efetua a atualização dos dados do documento
response = ato_documento_controller.update(ato_documento_id, ato_documento_schema)
# Retorna os dados localizados
return response
# Exclui um determinado documento
@router.delete(
"/{ato_documento_id}",
status_code=status.HTTP_200_OK,
summary="Remove um documento",
response_description="Remove um documento",
)
async def delete(ato_documento_id: int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
ato_documento_schema = AtoDocumentoSchema(ato_documento_id=ato_documento_id)
# Efetua a exclusão de um determinado documento
response = ato_documento_controller.delete(ato_documento_schema)
# Retorna os dados localizados
return response