Files
update-server/app/api/routes/admin_logs.py
T

77 lines
3.1 KiB
Python

from fastapi import APIRouter, Body, Depends, HTTPException
from app.core.security import require_permission
from app.repositories import log_repository
from app.schemas.log import DownloadLogClearRequest, LogDeleteRequest
router = APIRouter(tags=["admin-logs"])
@router.get("/admin/report/list")
def admin_get_report_log(auth=Depends(require_permission("log:view"))):
return {"list": log_repository.list_upgrade_logs()}
@router.post("/admin/report/delete")
def admin_delete_report_log(body: LogDeleteRequest, auth=Depends(require_permission("log:manage"))):
log_id = int(body.id or 0)
if log_id < 1:
raise HTTPException(status_code=400, detail="日志 ID 无效")
deleted = log_repository.delete_upgrade_log(log_id)
if deleted != 1:
raise HTTPException(status_code=404, detail="升级日志不存在")
return {"msg": "升级日志已删除", "deleted": deleted}
@router.post("/admin/report/clear")
def admin_clear_report_logs(auth=Depends(require_permission("log:manage"))):
deleted = log_repository.clear_upgrade_logs()
return {"msg": "升级日志已清空", "deleted": deleted}
@router.get("/admin/download-log/list")
def admin_download_log_list(app_id: str = "", limit: int = 300, auth=Depends(require_permission("log:view"))):
limit = max(1, min(limit, 1000))
return {"list": log_repository.list_download_logs(app_id, limit)}
@router.post("/admin/download-log/delete")
def admin_download_log_delete(body: LogDeleteRequest, auth=Depends(require_permission("log:manage"))):
log_id = int(body.id or 0)
if log_id < 1:
raise HTTPException(status_code=400, detail="日志 ID 无效")
deleted = log_repository.delete_download_log(log_id)
if deleted != 1:
raise HTTPException(status_code=404, detail="下载日志不存在")
return {"msg": "下载日志已删除", "deleted": deleted}
@router.post("/admin/download-log/clear")
def admin_download_log_clear(body: DownloadLogClearRequest | None = Body(default=None), auth=Depends(require_permission("log:manage"))):
app_id = (body.app_id if body else "").strip()
deleted = log_repository.clear_download_logs(app_id)
return {"msg": "下载日志已清空", "deleted": deleted}
@router.get("/admin/audit-log/list")
def admin_audit_log_list(limit: int = 300, auth=Depends(require_permission("log:view"))):
return {"list": log_repository.list_audit_logs(max(1, min(limit, 1000)))}
@router.post("/admin/audit-log/delete")
def admin_audit_log_delete(body: LogDeleteRequest, auth=Depends(require_permission("log:manage"))):
log_id = int(body.id or 0)
if log_id < 1:
raise HTTPException(status_code=400, detail="日志 ID 无效")
deleted = log_repository.delete_audit_log(log_id)
if deleted != 1:
raise HTTPException(status_code=404, detail="审计日志不存在")
return {"msg": "审计日志已删除", "deleted": deleted}
@router.post("/admin/audit-log/clear")
def admin_audit_log_clear(auth=Depends(require_permission("log:manage"))):
deleted = log_repository.clear_audit_logs()
return {"msg": "审计日志已清空", "deleted": deleted}