monitoring-api/packages/v1/administrativo/endpoints/log_endpoint.py
2025-10-06 09:30:41 -03:00

111 lines
No EOL
3.8 KiB
Python

# 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