Files
2026-09-21 22:13:04 +08:00

46 lines
1.8 KiB
Python

# 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)