From b874d0c77607d6dbddd2cb54302d748f40f76c91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=20=E6=9F=8F?= Date: Mon, 9 Dec 2024 16:11:58 +0900 Subject: [PATCH] bugfix edit_flow --- backend/app/api/api_v1/routers/platform.py | 21 ++++++++++------ backend/app/db/cruddb/dbapp.py | 26 ++++++++++++++++++- backend/app/tests/test_user_app.py | 29 ++++++++++++++++++++++ 3 files changed, 68 insertions(+), 8 deletions(-) diff --git a/backend/app/api/api_v1/routers/platform.py b/backend/app/api/api_v1/routers/platform.py index 07b538d..8895520 100644 --- a/backend/app/api/api_v1/routers/platform.py +++ b/backend/app/api/api_v1/routers/platform.py @@ -293,34 +293,41 @@ async def flow_create( @r.put( - "/flow/{flowid}", response_model=Flow|None, response_model_exclude_none=True + "/flow", tags=["App"], + response_model=ApiReturnModel[Flow|None], + response_model_exclude_none=True ) async def flow_edit( request: Request, - flowid: str, flow: FlowIn, user=Depends(get_current_active_user), db=Depends(get_db), ): try: - domain = domainService.get_default_domain(db, user.id) #get_activedomain(db, user.id) + domain = domainService.get_default_domain(db, user.id) if not domain: - return None - return edit_flow(db,domain.url, flow,user.id) + return ApiReturnModel(data = None) + return ApiReturnModel(data = appService.edit_flow(db,domain.url, flow,user.id)) except Exception as e: raise APIException('platform:flow',request.url._url,f"Error occurred while edit flow:",e) @r.delete( - "/flow/{flowid}", response_model=Flow, response_model_exclude_none=True + "/flow/{flowid}", tags=["App"], + response_model=ApiReturnModel[Flow|None], + response_model_exclude_none=True ) async def flow_delete( request: Request, flowid: str, + user=Depends(get_current_active_user), db=Depends(get_db), ): try: - return delete_flow(db, flowid) + domain = domainService.get_default_domain(db, user.id) + if not domain: + return ApiReturnModel(data = None) + return ApiReturnModel(data = appService.delete_flow(db, flowid)) except Exception as e: raise APIException('platform:flow',request.url._url,f"Error occurred while delete flow:",e) diff --git a/backend/app/db/cruddb/dbapp.py b/backend/app/db/cruddb/dbapp.py index 9d7ac3e..6c2751e 100644 --- a/backend/app/db/cruddb/dbapp.py +++ b/backend/app/db/cruddb/dbapp.py @@ -28,6 +28,9 @@ class dbflow(crudbase): def get_domain_apps(self): return None + def get_flow_by_flowid(self,db: Session,flowid:str): + return db.execute(super().get_by_conditions({"flowid":flowid})).scalars().first() + def get_flows_by_appid(self,db: Session,domainurl:str,appid:str): return db.execute(select(models.Flow).filter(and_(models.Flow.domainurl == domainurl,models.Flow.appid == appid))).scalars().all() @@ -58,7 +61,7 @@ class dbflow(crudbase): db.commit() db.refresh(db_flow) return db_flow - + dbflow = dbflow() @@ -174,4 +177,25 @@ class dbapp(crudbase): def create_flow(self,db: Session, domainurl: str, flow: schemas.FlowIn,userid:int): return dbflow.create_flow(db,domainurl,flow,userid) + def edit_flow(self,db: Session, domainurl: str, flow: schemas.FlowIn,userid:int): + db_flow = dbflow.get_flow_by_flowid(db, flow.flowid) + if not db_flow: + return dbflow.create_flow(db,domainurl,flow,userid) + db_flow.appid =flow.appid + db_flow.eventid=flow.eventid + db_flow.domainurl=domainurl + db_flow.name=flow.name + db_flow.content=flow.content + db_flow.updateuserid = userid + db.add(db_flow) + db.commit() + db.refresh(db_flow) + return db_flow + + def delete_flow(self,db: Session, flowid: str): + db_flow = dbflow.get_flow_by_flowid(db,flowid) + if db_flow: + return dbflow.delete(db,db_flow.id) + return None + appService = dbapp() \ No newline at end of file diff --git a/backend/app/tests/test_user_app.py b/backend/app/tests/test_user_app.py index 068e03e..aed702b 100644 --- a/backend/app/tests/test_user_app.py +++ b/backend/app/tests/test_user_app.py @@ -1,3 +1,4 @@ +import logging def test_create_flow(test_client,test_domain,test_app_id,login_user): test_flow={ "flowid": "73e82bee-76a2-4347-a069-e21bf5e21111", @@ -18,6 +19,34 @@ def test_create_flow(test_client,test_domain,test_app_id,login_user): assert data["data"]["eventid"] == test_flow["eventid"] assert data["data"]["content"] == test_flow["content"] +def test_delete_flow(test_client,test_domain,test_app_id,login_user): + response = test_client.delete("/api/flow/73e82bee-76a2-4347-a069-e21bf5e21111",headers={"Authorization": "Bearer " + login_user}) + data = response.json() + logging.error(data) + assert response.status_code == 200 + assert "data" in data + assert data["data"] is not None + +def test_edit_flow(test_client,test_domain,test_app_id,login_user): + test_flow={ + "flowid": "73e82bee-76a2-4347-a069-e21bf5e21111", + "appid": test_app_id, + "appname": "test_app_new", + "eventid": "abc", + "name": "保存をクリックしたとき", + "content": "" + } + response = test_client.put("/api/flow", json=test_flow,headers={"Authorization": "Bearer " + login_user}) + assert response.status_code == 200 + data = response.json() + assert "data" in data + assert data["data"] is not None + assert data["data"]["domainurl"] == test_domain.url + assert data["data"]["flowid"] == test_flow["flowid"] + assert data["data"]["appid"] == test_flow["appid"] + assert data["data"]["eventid"] == test_flow["eventid"] + assert data["data"]["content"] == test_flow["content"] + def test_appversions_update(test_client,test_domain,test_app_id,login_user): app_version ={ "versionname": "version1",