diff --git a/api/api_v1/endpoints/dashboard.py b/api/api_v1/endpoints/dashboard.py index d8566c8..06e88bc 100644 --- a/api/api_v1/endpoints/dashboard.py +++ b/api/api_v1/endpoints/dashboard.py @@ -25,6 +25,22 @@ async def create( return schemas.Msg(code=0, msg='ok', data='创建成功') +@router.post('/edit_show_report') +async def edit_show_report( + request: Request, + data_in: schemas.EditShowReport, + db: AsyncIOMotorDatabase = Depends(get_database), + current_user: schemas.UserDB = Depends(deps.get_current_user) +) -> schemas.Msg: + report_id = data_in.config.report_id + res = await crud.dashboard.update_one(db, {'_id': data_in.dashboard_id, 'reports.report_id': report_id}, + {'$set': {f'reports.$.{k}': v for k, v in data_in.config.dict().items()}}) + if res.modified_count == 1: + return schemas.Msg(code=0, msg='ok', data=data_in.config) + elif res.modified_count == 0: + return schemas.Msg(code=-1, msg='没有修改', data=dict()) + + @router.post("/delete") async def delete( request: Request, diff --git a/crud/base.py b/crud/base.py index 4669680..310db8a 100644 --- a/crud/base.py +++ b/crud/base.py @@ -39,7 +39,8 @@ class CRUDBase: return await db[self.coll_name].delete_many(filter, collation, hint, session) async def update_one(self, db, filter, update, upsert=False): - return await db[self.coll_name].update_one(filter, update, upsert) + res = await db[self.coll_name].update_one(filter, update, upsert) + return res async def update_many(self, db, filter, update, upsert=False): return await db[self.coll_name].update_many(filter, update, upsert) diff --git a/schemas/dashboard.py b/schemas/dashboard.py index 6f6431d..3467af0 100644 --- a/schemas/dashboard.py +++ b/schemas/dashboard.py @@ -28,6 +28,19 @@ class DashboardDelete(BaseModel): ids: List[str] +class Report(BaseModel): + name: str + report_id: str + graph_type: str + model: str + graph_size: str + + +class EditShowReport(BaseModel): + dashboard_id: str + config: Report + + class Category(str, Enum): project = 'kanban' space = 'space' @@ -44,14 +57,6 @@ class DashboardCopy(BaseModel): dest_project_id: str -class Report(BaseModel): - name: str - report_id: str - graph_type: str - model: str - graph_size: str - - class AddReport(DBBase): report_ids: List[Report]