from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from typing import List from database import get_db from scheme.wl_class_scheme import ClassCreate,ClassUpdate,ClassOut from dao import wl_class_dao from fastapi import HTTPException # 创建班级模块的路由,统一前缀 /classes router = APIRouter(prefix="/classes", tags=["班级管理"]) # 1. 新增班级 @router.post("/", response_model=ClassOut) def create_class(class_data: ClassCreate, db: Session = Depends(get_db)): return wl_class_dao.create_class(db, class_data.model_dump()) #为了合并先注释的部分 # @router.post("/", response_model=ClassOut) # def create_class(class_data: ClassCreate, db: Session = Depends(get_db)): # 把 pydantic 对象转成字典,再传给 dao # if not db_class: # raise HTTPException(status_code=404, detail="班级不存在") # 2. 获取班级列表 @router.get("/", response_model=List[ClassOut]) def read_classes(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): return wl_class_dao.get_classes(db, skip, limit) # 3. 获取单个班级详情 @router.get("/{class_id}", response_model=ClassOut) def read_class(class_id: int, db: Session = Depends(get_db)): db_class = wl_class_dao.get_class_by_id(db, class_id) if not db_class: raise HTTPException(status_code=404, detail="班级不存在") return db_class # 4. 修改班级 @router.put("/{class_id}", response_model=ClassOut) def update_class(class_id: int, class_data: ClassUpdate, db: Session = Depends(get_db)): db_class = wl_class_dao.update_class(db, class_id, class_data.model_dump(exclude_unset=True)) if not db_class: raise HTTPException(status_code=404, detail="班级不存在") return db_class # 5. 删除班级(逻辑删除) @router.delete("/{class_id}") def delete_class(class_id: int, db: Session = Depends(get_db)): # 直接把 dao 的结果返回给前端,前端根据 code 判断是否成功 return wl_class_dao.delete_class(db, class_id)