from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from database import get_db from dao.scores import add_score,query_id,query_er,query_sc,update_sc,delete_sc router = APIRouter(prefix="/scores", tags=["考核成绩管理"]) @router.post("/add", summary="按考核序次录入考核成绩") #1.录入成绩的路由 def add_score_api(id: str = Query(..., description="学生ID"), #用于校验学生ID是否存在 exam_round: int = Query(..., description="考核序次"), #用于校验同一学生同一考核序次是否重复录入 score: int = Query(..., ge=0, le=100, description="成绩(0-100)"), #录入的成绩 db: Session = Depends(get_db)): return add_score(db=db, id=id, exam_round=exam_round, score=score) @router.get("/query/id", summary="按学生ID查询成绩") #2. 按学生ID查询的路由 def query_id_api(id: str = Query(..., description="学生ID"), db: Session = Depends(get_db)): return query_id(db=db, id=id) @router.get("/query/round", summary="按考核序次查询成绩") #3. 按考核序次查询的路由 def query_er_api(exam_round: int = Query(..., description="考核序次"), db: Session = Depends(get_db)): return query_er(db=db, exam_round=exam_round) @router.get("/query/score", summary="按成绩查询记录") #4. 按成绩查询的路由 def query_sc_api(score: int = Query(..., ge=0, le=100, description="成绩"), db: Session = Depends(get_db)): return query_sc(db=db, score=score) @router.put("/update", summary="根据学生ID和考核序次修改成绩") #5. 修改成绩的路由 def update_sc_api(id: str = Query(..., description="学生ID"), #根据学生ID exam_round: int = Query(..., description="考核序次"), #根据考核序次 score: int = Query(..., ge=0, le=100, description="新的成绩"), #修改的成绩值 db: Session = Depends(get_db)): return update_sc(db=db, id=id, exam_round=exam_round, score=score) @router.delete("/delete", summary="根据学生ID和考核序次删除成绩") #6. 删除成绩(软删除) def delete_sc_api(id: str = Query(..., description="学生ID"), #根据学生ID exam_round: int = Query(..., description="考核序次"), #根据考核序次 db: Session = Depends(get_db)): return delete_sc(db=db, id=id, exam_round=exam_round)