modelstore/App/Router/CategoryRouter.py

98 lines
3.3 KiB
Python

from typing import List
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from App.Crud import CategoryCrud as Crud
from App.Schema import CategorySchema as Schema
from Utils.AccessControl.AccessUtil import rbac
from Utils.DataBase.SqlAlchemyUtils import get_db
router = APIRouter(
tags=["打分卡分类"],
prefix="/api/model_store/scorecard/category",
dependencies=[Depends(rbac)]
)
@router.post("/major/create", summary="新建主分类")
def func(schema: Schema.CreateMajorCategoryReqBody, db: Session = Depends(get_db)):
item = Crud.get_major_category_by_name(db=db, name=schema.name)
if item:
raise HTTPException(status_code=202, detail="MajorCategory Already Existed")
Crud.create_major_category(db=db, schema=schema)
return {"info": "Success"}
@router.post("/major/delete", summary="删除主分类")
def func(schema: Schema.DeleteMajorCategoryReqBody, db: Session = Depends(get_db)):
item = Crud.get_major_category_by_id(db=db, _id=schema.id)
if not item:
raise HTTPException(status_code=404, detail="MajorCategory Not Found")
result = Crud.delete_major_category(db=db, schema=schema)
if not result:
raise HTTPException(status_code=202, detail="MajorCategory Is Be Using")
return {"info": "Success"}
@router.post("/major/edit", summary="编辑主分类")
def func(_id: str, schema: Schema.EditMajorCategoryReqBody, db: Session = Depends(get_db)):
item = Crud.get_major_category_by_id(db=db, _id=_id)
if not item:
raise HTTPException(status_code=404, detail="MajorCategory Not Found")
result = Crud.edit_major_category(db=db, _id=_id, schema=schema)
if not result:
raise HTTPException(status_code=400, detail="InValid RequestBody")
return {"info": "Success"}
@router.post("/sub/create", summary="新建子分类")
def func(schema: Schema.CreateSubCategoryReqBody, db: Session = Depends(get_db)):
item = Crud.get_sub_category_by_name(db=db, name=schema.name)
if item:
raise HTTPException(status_code=202, detail="SubCategory Already Existed")
item = Crud.get_major_category_by_id(db=db, _id=schema.major_category_id)
if not item:
raise HTTPException(status_code=404, detail="MajorCategory Not Found")
Crud.create_sub_category(db=db, schema=schema)
return {"info": "Success"}
@router.post("/sub/delete", summary="删除子分类")
def func(_id: str, db: Session = Depends(get_db)):
item = Crud.get_sub_category_by_id(db=db, _id=_id)
if not item:
raise HTTPException(status_code=404, detail="SubCategory Not Found")
Crud.delete_sub_category(db=db, _id=_id)
return {"info": "Success"}
@router.post("/sub/edit", summary="编辑子分类")
def func(_id: str, schema: Schema.EditSubCategoryReqBody, db: Session = Depends(get_db)):
item = Crud.get_sub_category_by_id(db=db, _id=_id)
if not item:
raise HTTPException(status_code=404, detail="SubCategory Not Found")
Crud.edit_sub_category(db=db, _id=_id, schema=schema)
return {"info": "Success"}
@router.get("/list", summary="查看分类", response_model=List[Schema.ListMajorCategoryResBody])
def func(db: Session = Depends(get_db)):
items = Crud.list_major_category(db=db)
return Schema.ListMajorCategoryResBody.format(items)