creditrating-wcq/ModelStore/App/Router/DataTableRouter.py

58 lines
2.2 KiB
Python
Raw Permalink Normal View History

2023-02-20 09:44:05 +08:00
import json
from fastapi import APIRouter, Depends, HTTPException, UploadFile, File
from sqlalchemy.orm import Session
from ModelStore.App.Crud import ScoreCardCrud, DataTableCrud
from Utils.AccessControl.AccessUtil import rbac
from Utils.DataBase.ModelStore.MongoHelperUtils import get_mongodb, MongoHelper
from Utils.DataBase.ModelStore.SqlAlchemyUtils import get_db
router = APIRouter(
tags=["打分卡数据表"],
prefix="/api/model_store/scorecard/data_table",
dependencies=[Depends(rbac)]
)
@router.post("/create", summary="新建数据表")
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
if not item:
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
if item.data_table:
raise HTTPException(status_code=202, detail="DataTable Already Existed")
_file = await file.read()
content = json.loads(_file.decode('utf-8'))
DataTableCrud.create_data_table(db=db, mongodb=mongodb, _id=_id, content={"data": content})
return {"info": "Success"}
@router.post("/delete", summary="删除数据表")
def func(_id: str, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
if not item:
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
if not item.data_table:
raise HTTPException(status_code=202, detail="DataTable Not Found")
DataTableCrud.delete_data_table(db=db, mongodb=mongodb, _id=_id)
return {"info": "Success"}
@router.post("/view", summary="查看数据表")
def func(_id: str, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
if not item:
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
if not item.data_table:
raise HTTPException(status_code=202, detail="DataTable Not Found")
table_data = ScoreCardCrud.get_sub_table_data(mongodb=mongodb, tablename="数据表", obj_id=item.data_table.obj_id)
return table_data