# 导入FastAPI工具:APIRouter用来创建路由、Depends依赖注入、HTTPException抛出异常 from fastapi import APIRouter, Depends, HTTPException # 导入数据库会话Session,用来操作数据库 from sqlalchemy.orm import Session # 导入班级模块DAO层的函数(数据库操作写在dao里面,接口直接调用) from dao.class_dao import get_class_by_name, get_class_by_cid, update_class, create_class # 导入获取数据库会话的依赖函数 from database import get_db # 导入班级数据库模型Classes(ORM模型) from model.class_model import Classes # 导入Pydantic模型:请求体ClassAdd、响应体ClassResp from schema.class_schema import ClassAdd, ClassResp router = APIRouter() # 新增班级接口 POST @router.post("/add_class", response_model=ClassResp,summary='新增班级') def add_class( class_data: ClassAdd, db: Session = Depends(get_db) ): # 先查班级名是否存在 exist_class = get_class_by_name(db, class_data.class_name) if exist_class: raise HTTPException(status_code=400, detail="班级名称已存在,不能重复添加") # 调用dao新增(不再重复写数据库代码) new_class = create_class(db, class_data) return new_class # 根据id查询单个班级接口 @router.get("/get_one_class/{class_cid}", response_model=ClassResp,summary='id查询单个班级') def get_one_class( class_cid: int, db: Session = Depends(get_db) ): # 调用dao查询班级 class_obj = get_class_by_cid(db, class_cid) # 判断有没有查到 if not class_obj: raise HTTPException(status_code=404, detail="班级不存在") # 返回查到的数据 return class_obj # 修改班级接口 @router.put("/update_class/{class_cid}", response_model=ClassResp,summary='修改班级') def update_class_api( class_cid: int, new_data: ClassAdd, db: Session = Depends(get_db) ): # 调用dao修改班级 class_obj = update_class(db, class_cid, new_data) # 判断班级是否存在 if not class_obj: raise HTTPException(status_code=404, detail="班级不存在,修改失败") # 返回修改后的班级信息 return class_obj # 【逻辑删除班级接口】 @router.delete("/delete_class/{class_cid}",summary='逻辑删除班级') def delete_class_api(class_cid: int, db: Session = Depends(get_db)): # 只查询未被逻辑删除的数据 is_delete=0 class_obj = db.query(Classes).filter(Classes.cid == class_cid, Classes.is_del == 1).first() if not class_obj: raise HTTPException(status_code=404, detail="班级不存在,删除失败") # 逻辑删除:标记为1,不是删掉记录 class_obj.is_del = 0 db.commit() return {"msg": "逻辑删除成功"}