58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
|
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
|