Files
dpb/backend/app/api/v1/module_bre/audit/controller.py
T

54 lines
2.3 KiB
Python
Raw Normal View History

from typing import Annotated
from fastapi import APIRouter, Depends, Path, Query
from fastapi.responses import JSONResponse
from sqlalchemy.ext.asyncio import AsyncSession
from app.common.response import ResponseSchema, SuccessResponse
from app.core.base_schema import AuthSchema, PageResultSchema, PaginationQueryParam
from app.core.dependencies import AuthPermission, db_getter
from app.core.router_class import OperationLogRoute
from .schema import AuditLogOutSchema, AuditLogQueryParam
from .service import AuditLogService
AuditRouter = APIRouter(route_class=OperationLogRoute, prefix="/audit", tags=["育种审计日志"])
@AuditRouter.get("/list", summary="分页查询审计日志", response_model=ResponseSchema[PageResultSchema[AuditLogOutSchema]])
async def get_audit__list_controller(
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_bre:audit:query"]))],
page: Annotated[PaginationQueryParam, Depends()],
search: Annotated[AuditLogQueryParam, Query()],
db: Annotated[AsyncSession, Depends(db_getter)],
) -> JSONResponse:
service = AuditLogService(auth, db)
result_dict = await service.page(
page_no=page.page_no,
page_size=page.page_size,
search=search,
order_by=page.order_by,
)
return SuccessResponse(data=result_dict, msg="查询审计日志列表成功")
@AuditRouter.get("/detail/{id}", summary="获取审计日志详情", response_model=ResponseSchema[AuditLogOutSchema])
async def get_audit__detail_controller(
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_bre:audit:query"]))],
id: Annotated[int, Path(description="审计日志ID")],
db: Annotated[AsyncSession, Depends(db_getter)],
) -> JSONResponse:
service = AuditLogService(auth, db)
result_dict = await service.detail(id=id)
return SuccessResponse(data=result_dict, msg="获取审计日志详情成功")
@AuditRouter.get("/options", summary="审计日志筛选选项")
async def get_audit__options_controller(
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_bre:audit:query"]))],
db: Annotated[AsyncSession, Depends(db_getter)],
) -> JSONResponse:
service = AuditLogService(auth, db)
options = await service.options()
return SuccessResponse(data=options, msg="获取审计日志选项成功")