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

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