from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from database import get_db from scheme.wl_student_scheme import StudentCreate, StudentUpdate, StudentOut from dao import wl_student_dao router = APIRouter(prefix="/students", tags=["学生管理"]) @router.get("", response_model=list[StudentOut]) def list_students( stu_no: str = Query(None), stu_name: str = Query(None), class_id: int = Query(None), db: Session = Depends(get_db), ): return wl_student_dao.search_students(db, stu_no, stu_name, class_id) @router.post("", response_model=StudentOut) def create_student(data: StudentCreate, db: Session = Depends(get_db)): return wl_student_dao.create_student(db, data) @router.get("/{stu_no}", response_model=StudentOut) def get_student(stu_no: str, db: Session = Depends(get_db)): stu = wl_student_dao.get_student_by_no(db, stu_no) if not stu: raise HTTPException(404, "学生不存在") return stu @router.put("/{stu_no}", response_model=StudentOut) def update_student(stu_no: str, data: StudentUpdate, db: Session = Depends(get_db)): stu = wl_student_dao.update_student(db, stu_no, data) if not stu: raise HTTPException(404, "学生不存在") return stu @router.delete("/{stu_no}") def delete_student(stu_no: str, db: Session = Depends(get_db)): if not wl_student_dao.delete_student(db, stu_no): raise HTTPException(404, "学生不存在") return {"msg": "删除成功"}