# Importação de bibliotecas from typing import Optional from fastapi import APIRouter, Body, Depends, status, Query from actions.jwt.get_current_user import get_current_user from packages.v1.administrativo.controllers.log_controller import LogController from packages.v1.administrativo.schemas.log_schema import ( LogSchema, LogAuthenticateSchema, LogSaveSchema, LogUpdateSchema, LogIdSchema, LogFileSchema ) # Inicializa o roteador para as rotas de log router = APIRouter() # Instânciamento do controller desejado log_controller = LogController() # Lista todos os logs com paginação @router.get('/', status_code=status.HTTP_200_OK, summary='Lista todos os logs cadastrados com paginação', response_description='Lista todos os logs cadastrados') async def index( first: int = Query(20, description="Total de registros por página (LIMIT)"), skip: int = Query(0, description="Total de registros a pular (OFFSET)"), current_user: dict = Depends(get_current_user) ): # Busca todos os logs cadastrados, passando os parâmetros de paginação response = log_controller.index(first=first, skip=skip) # Retorna os dados localizados com os metadados de paginação return response # Localiza um log pelo campo 'file' (adaptado de /email) @router.get('/file', status_code=status.HTTP_200_OK, summary='Busca um registro em específico pelo nome do arquivo (file)', response_description='Busca um registro em específico') async def getFile(file: str, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos log_schema = LogFileSchema(file=file) # Busca um log específico pelo arquivo response = log_controller.getFile(log_schema) # Retorna os dados localizados return response # Localiza um log pelo ID @router.get('/{log_id}', status_code=status.HTTP_200_OK, summary='Busca um registro em específico pelo ID do log', response_description='Busca um registro em específico') async def show(log_id: int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos log_schema = LogIdSchema(log_id=log_id) # Busca um log específico pelo ID response = log_controller.show(log_schema) # Retorna os dados localizados return response # Cadastro de logs @router.post('/', status_code=status.HTTP_201_CREATED, # Alterado para 201 Created, mais apropriado para POST summary='Cadastra um novo log', response_description='Cadastra um log') async def save(log_schema: LogSaveSchema, current_user: dict = Depends(get_current_user)): # Efetua o cadastro do log junto ao banco de dados response = log_controller.save(log_schema) # Retorna os dados localizados return response # Atualiza os dados de log @router.put('/{log_id}', status_code=status.HTTP_200_OK, summary='Atualiza um log', response_description='Atualiza um log') async def update(log_id: int, log_schema: LogUpdateSchema, current_user: dict = Depends(get_current_user)): # Efetua a atualização dos dados do log response = log_controller.update(log_id, log_schema) # Retorna os dados localizados return response # Exclui um determinado log @router.delete('/{log_id}', status_code=status.HTTP_200_OK, summary='Remove um log', response_description='Remove um log') async def delete(log_id: int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos log_schema = LogIdSchema(log_id=log_id) # Efetua a exclusão de um determinado log response = log_controller.delete(log_schema) # Retorna os dados localizados return response