第二版_完整

This commit is contained in:
jianqi
2026-09-14 11:38:04 +08:00
parent 414de4bad8
commit 40a269b751
12 changed files with 784 additions and 1 deletions
+82
View File
@@ -0,0 +1,82 @@
from fastapi import APIRouter, Depends, HTTPException, Query, Path
from sqlalchemy.orm import Session
from typing import List
from database import get_db
from dao.teacher_dao import TeacherDao
from scheme.teacher_scheme import TeacherAdd,TeacherUpdate, TeacherResponse
router = APIRouter()
# 查询所有教师(支持分页)
@router.get("/get_all_teachers", response_model=List[TeacherResponse])
async def get_all_teachers(
skip: int = Query(0, ge=0, description="跳过的记录数"),
limit: int = Query(100, ge=1, le=200, description="返回的最大记录数"),
db: Session = Depends(get_db) # 依赖注入获得数据库会话
):
teachers = TeacherDao.get_all(db, skip=skip, limit=limit)
return teachers # FastAPI 自动根据 response_model 转换为 JSON
# 根据 ID 和 name 查询单个教师
@router.get("/get_teacher/{teacher_id_name}", response_model=TeacherResponse)
async def get_teacher(
teacher_id_name: str = Path(..., description="要查询教师的id或姓名"),
db: Session = Depends(get_db)
):
teacher = TeacherDao.get_by_id(db, teacher_id_name) or TeacherDao.get_by_name(db, teacher_id_name)
if not teacher:
raise HTTPException(status_code=404, detail="用户不存在")
return teacher
# 根据 ID 查询教师带教的班级的信息
@router.get("/get_class_info/{teacher_id}")
async def get_class_info(
teacher_id: str = Path(..., description="要查询教师的id"),
db: Session = Depends(get_db)
):
teacher = TeacherDao.get_clss_info(db, teacher_id)
if not teacher:
raise HTTPException(status_code=404, detail="用户不存在")
return teacher
# 添加教师信息
@router.post("/add_teacher", response_model=TeacherResponse)
async def add_teacher(
teacher_data: TeacherAdd,
db: Session = Depends(get_db)
):
# 调用 TeacherDao 创建教师信息
new_teacher = TeacherDao.add(db, teacher_data)
return new_teacher
# 根据教师id更新教师信息
@router.put("/update_teacher/{teacher_id}", response_model=TeacherResponse)
async def update_teacher(
teacher_id: str,
teacher_data: TeacherUpdate,
db: Session = Depends(get_db)
):
# 检查传入的id教师是否存在
existing = TeacherDao.get_by_id(db, teacher_id)
if not existing:
raise HTTPException(status_code=404, detail="用户不存在")
# 执行更新
updated = TeacherDao.update(db, teacher_id, teacher_data)
return updated
# 删除教师
@router.delete("/delete_teacher/{teacher_id}")
async def delete_teacher(
teacher_id: str,
db: Session = Depends(get_db)
):
success = TeacherDao.delete(db, teacher_id)
if not success:
raise HTTPException(status_code=404, detail="用户不存在")
return "该教师已删除"