# api/teacher.py # 本文件定义老师模块的所有 API 路由(Controller 层) from fastapi import APIRouter, Depends, HTTPException,Query from sqlalchemy.orm import Session from database import get_db from dao.teacher_dao import TeacherDAO from scheme.teachers import TeacherCreate, TeacherUpdate, TeacherResponse, TeacherListResponse # 创建路由器 router = APIRouter(prefix="/teachers", tags=["老师管理"]) #查询老师列表(支持按姓名模糊查询、是否班主任) @router.get("/list/", response_model=TeacherListResponse) async def get_teacher_list( teacher_name: str = Query(None,), is_headteacher: int = Query(default=None,ge=0,le=1), page: int = 1, size: int = 10, db: Session = Depends(get_db) ): total, items = TeacherDAO.get_list(db, teacher_name=teacher_name, is_headteacher=is_headteacher, page=page, size=size) return {"total": total, "items": items} #按老师编号查单个老师 @router.get("/{teacher_id}", response_model=TeacherResponse) async def get_teacher_by_id(teacher_id: int, db: Session = Depends(get_db)): return TeacherDAO.get_by_id(db, teacher_id) # 新增老师 @router.post("/create", response_model=TeacherCreate) async def create_teacher(data: TeacherCreate, db: Session = Depends(get_db)): return TeacherDAO.create(db, data) # 更新老师信息 @router.put("/update/{teacher_id}", response_model=TeacherResponse) async def update_teacher(teacher_id: int, data: TeacherUpdate, db: Session = Depends(get_db)): return TeacherDAO.update(db, teacher_id, data) # 逻辑删除老师 @router.post("/delete/{teacher_id}", response_model=TeacherResponse) async def delete_teacher(teacher_id: int, db: Session = Depends(get_db)): return TeacherDAO.delete(db, teacher_id)