2026-09-04 10:20:40 +08:00

57 lines
2.3 KiB
Python

"""Judgment standard library endpoints."""
from typing import Annotated
from fastapi import APIRouter, Depends, Query
from app.api.dependencies import DatabaseSession, require_permission
from app.models.entities import UserAccount
from app.schemas.common import ApiResponse
from app.schemas.standards import StandardRuleCreate, StandardRuleDetail, StandardRuleListData, StandardRuleUpdate
from app.services.standards import StandardLibraryService
router = APIRouter(prefix="/standards", tags=["standards"])
@router.get("", response_model=ApiResponse[StandardRuleListData])
async def list_standards(
session: DatabaseSession,
_current_user: Annotated[UserAccount, Depends(require_permission("standard.read"))],
keyword: str | None = Query(default=None, max_length=50),
category: str = Query(default="all"),
status: str = Query(default="启用"),
page: int = Query(default=1, ge=1),
page_size: int = Query(default=20, ge=1, le=100),
) -> ApiResponse[StandardRuleListData]:
return ApiResponse(data=await StandardLibraryService(session).list(
keyword=keyword, category=category, status=status, page=page, page_size=page_size,
))
@router.get("/{rule_id}", response_model=ApiResponse[StandardRuleDetail])
async def get_standard(
rule_id: int,
session: DatabaseSession,
_current_user: Annotated[UserAccount, Depends(require_permission("standard.read"))],
) -> ApiResponse[StandardRuleDetail]:
return ApiResponse(data=await StandardLibraryService(session).get(rule_id))
@router.post("", response_model=ApiResponse[StandardRuleDetail])
async def create_standard(
payload: StandardRuleCreate,
session: DatabaseSession,
current_user: Annotated[UserAccount, Depends(require_permission("standard.manage", operate=True))],
) -> ApiResponse[StandardRuleDetail]:
return ApiResponse(data=await StandardLibraryService(session).create(payload, current_user))
@router.patch("/{rule_id}", response_model=ApiResponse[StandardRuleDetail])
async def update_standard(
rule_id: int,
payload: StandardRuleUpdate,
session: DatabaseSession,
current_user: Annotated[UserAccount, Depends(require_permission("standard.manage", operate=True))],
) -> ApiResponse[StandardRuleDetail]:
return ApiResponse(data=await StandardLibraryService(session).update(rule_id, payload, current_user))