Files
1/api/wl_class_api.py
2026-09-21 20:16:09 +08:00

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)