57 lines
2.3 KiB
Python
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))
|