from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from dao.wl_teacher_dao import ( create_teacher, get_teacher_id, get_teacher_no, list_teachers, update_teacher, delete_teacher_logic, generate_teacher_no, ) from database import get_db from scheme.wl_teacher_scheme import ( TeacherCreate, TeacherUpdate, TeacherResponse, ) router = APIRouter() # 查询自动生成的老师工号 @router.get("/generate-no") def get_new_teacher_no(): """获取自动生成的教师工号""" new_no = generate_teacher_no() return {"t_no": new_no} # 查询教师列表 @router.get("/", response_model=list[TeacherResponse]) def query_list(db: Session = Depends(get_db)): return list_teachers(db) # 根据工号查询单个教师 @router.get("/no/{t_no}", response_model=TeacherResponse) def query_one_by_no(t_no: str, db: Session = Depends(get_db)): teacher = get_teacher_no(db, t_no) if not teacher: raise HTTPException(status_code=404, detail="老师不存在") return teacher # 根据 id 查询单个教师 @router.get("/{t_id}", response_model=TeacherResponse) def query_one_by_id(t_id: int, db: Session = Depends(get_db)): teacher = get_teacher_id(db, t_id) if not teacher: raise HTTPException(status_code=404, detail="老师不存在") return teacher # 新增教师 @router.post("/", response_model=TeacherResponse, status_code=201) def add_teacher(body: TeacherCreate, db: Session = Depends(get_db)): try: return create_teacher(db, body) except ValueError as e: raise HTTPException(status_code=400, detail=str(e)) # 修改教师 @router.put("/{t_id}", response_model=TeacherResponse) def edit_teacher( t_id: int, body: TeacherUpdate, db: Session = Depends(get_db), ): teacher = update_teacher(db, t_id, body) if not teacher: raise HTTPException(status_code=404, detail="老师不存在") return teacher # 逻辑删除教师 @router.delete("/{t_id}") def remove_teacher(t_id: int, db: Session = Depends(get_db)): return delete_teacher_logic(db, t_id)