Files
test1/api/wl_teacher_api.py
T
2026-09-21 21:58:28 +08:00

78 lines
2.1 KiB
Python

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)