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.DataBase.SqlAlchemyUtils import get_db router = APIRouter( tags=["打分卡分类"], prefix="/api/model_store/scorecard/category" ) @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)