# 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_parte_controller import ( AtoParteController, ) from packages.v1.administrativo.schemas.ato_parte_schema import ( AtoParteSchema, AtoParteSaveSchema, AtoParteUpdateSchema, AtoParteIdSchema, ) # Inicializa o roteador para as rotas de ato_parte router = APIRouter() # Instânciamento do controller desejado ato_parte_controller = AtoParteController() # Lista todas as partes @router.get( "/", status_code=status.HTTP_200_OK, summary="Lista todas as partes cadastradas", response_description="Lista todas as partes cadastradas", ) async def index(current_user: dict = Depends(get_current_user)): # Busca todas as partes cadastradas response = ato_parte_controller.index() # Retorna os dados localizados return response # Localiza uma parte 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_parte_schema = AtoParteSchema(ato_principal_id=ato_principal_id) # Busca uma parte especifica pelo ID do ato principal response = ato_parte_controller.showAtoPrincipal(ato_parte_schema) # Retorna os dados localizados return response # Localiza uma parte pelo ID @router.get( "/{ato_parte_id}", status_code=status.HTTP_200_OK, summary="Busca um registro em especifico pelo ID da parte", response_description="Busca um registro em especifico", ) async def show(ato_parte_id: int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos ato_parte_schema = AtoParteSchema(ato_parte_id=ato_parte_id) # Busca uma parte especifica pelo ID response = ato_parte_controller.show(ato_parte_schema) # Retorna os dados localizados return response # Cadastro de partes @router.post( "/", status_code=status.HTTP_200_OK, summary="Cadastra uma parte", response_description="Cadastra uma parte", ) async def save( ato_parte_schema: AtoParteSaveSchema, current_user: dict = Depends(get_current_user), ): # Efetua o cadastro da parte junto ao banco de dados response = ato_parte_controller.save(ato_parte_schema) # Retorna os dados localizados return response # Atualiza os dados de uma parte @router.put( "/{ato_parte_id}", status_code=status.HTTP_200_OK, summary="Atualiza uma parte", response_description="Atualiza uma parte", ) async def update( ato_parte_id: int, ato_parte_schema: AtoParteUpdateSchema, current_user: dict = Depends(get_current_user), ): # Efetua a atualização dos dados da parte response = ato_parte_controller.update(ato_parte_id, ato_parte_schema) # Retorna os dados localizados return response # Exclui uma determinada parte @router.delete( "/{ato_parte_id}", status_code=status.HTTP_200_OK, summary="Remove uma parte", response_description="Remove uma parte", ) async def delete(ato_parte_id: int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos ato_parte_schema = AtoParteSchema(ato_parte_id=ato_parte_id) # Efetua a exclusão de uma determinada parte response = ato_parte_controller.delete(ato_parte_schema) # Retorna os dados localizados return response