49 lines
2.0 KiB
Python
49 lines
2.0 KiB
Python
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) |