diff --git a/student/api/score.py b/student/api/score.py new file mode 100644 index 0000000..f128526 --- /dev/null +++ b/student/api/score.py @@ -0,0 +1,75 @@ +# api/score.py +from fastapi import APIRouter, Depends, HTTPException, Query +from sqlalchemy.orm import Session +from dao import score_dao +from database import get_db + +# 创建路由器 +router = APIRouter() + + + +# 不及格学生表 + +@router.get("/warning/list") +def warning_list(db: Session = Depends(get_db)): + return score_dao.get_warning(db) + + + +# 查某学生所有成绩 + + +@router.get("/{stu_id}") +def get_scores(stu_id: int, db: Session = Depends(get_db)): + return score_dao.get_score(db, stu_id) + + +# 增 + +@router.post("/") +def add_score( + student_id: int = Query(...), + exam_seq: int = Query(...), + score: float = Query(...), + db: Session = Depends(get_db), +): + obj, err = score_dao.add_score(db, student_id, exam_seq, score) + if err: + raise HTTPException(status_code=400, detail=err) + return obj + + + + +# 改 + + +@router.put("/update") +def update_score( + student_id: int = Query(...), + exam_seq: int = Query(...), + score: float = Query(...), + db: Session = Depends(get_db), +): + obj, err = score_dao.update_score(db, student_id, exam_seq, score) + if err: + raise HTTPException(status_code=404, detail=err) + return obj + + +# 逻辑删除 + + +@router.post("/delete") +def delete_score( + student_id: int = Query(...), + exam_seq: int = Query(...), + db: Session = Depends(get_db), +): + obj, err = score_dao.delete_score(db, student_id, exam_seq) + if err: + raise HTTPException(status_code=404, detail=err) + return {"message": "已删除,数据仍保留在后台"} + +