diff --git a/backend/app/db/cruddb/crudbase.py b/backend/app/db/cruddb/crudbase.py index 230fc0f..d3f1ecb 100644 --- a/backend/app/db/cruddb/crudbase.py +++ b/backend/app/db/cruddb/crudbase.py @@ -100,5 +100,5 @@ class crudbase: query = self._apply_filters(query, filters) if sort_by: query = self._apply_sorting(query, sort_by, sort_order) - #print(str(query)) + print(str(query)) return query \ No newline at end of file diff --git a/backend/app/db/cruddb/dbapp.py b/backend/app/db/cruddb/dbapp.py index ac8f47b..f1b3721 100644 --- a/backend/app/db/cruddb/dbapp.py +++ b/backend/app/db/cruddb/dbapp.py @@ -17,8 +17,8 @@ class dbflowhistory(crudbase): super().__init__(model=models.FlowHistory) def get_flows_by_appid_version(self,db: Session,domainurl:str,appid:str,version:int): - return db.execute(select(models.FlowHistory).filter(and_(models.FlowHistory.domainurl == domainurl,models.FlowHistory.appid == appid, models.FlowHistory.version == version))).scalars().all() - + return db.execute(super().get_by_conditions({"domainurl":domainurl,"appid":appid, "version":version})).scalars().first() + dbflowhistory = dbflowhistory() class dbflow(crudbase): @@ -32,7 +32,7 @@ class dbflow(crudbase): 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() + return db.execute(select(models.Flow).filter(and_(models.Flow.domainurl == domainurl,models.Flow.appid == appid))).scalars().first() def create_flow(self,db: Session, domainurl: str, flow: schemas.FlowIn,userid:int): @@ -111,62 +111,60 @@ class dbapp(crudbase): db.add(appversion) db.add(db_app) - flows = dbflow.get_flows_by_appid(db,domainurl,newversion.appid) - for flow in flows: - db_flowhistory = models.FlowHistory( - flowid = flow.flowid, - appid = flow.appid, - eventid = flow.eventid, - domainurl = flow.domainurl, - name = flow.name, - content = flow.content, - version = db_app.version, - updateuserid = userid, - createuserid = userid - ) - db.add(db_flowhistory) + flow = dbflow.get_flows_by_appid(db,domainurl,newversion.appid) + if not flow: + return None + db_flowhistory = models.FlowHistory( + flowid = flow.flowid, + appid = flow.appid, + eventid = flow.eventid, + domainurl = flow.domainurl, + name = flow.name, + content = flow.content, + version = db_app.version, + updateuserid = userid, + createuserid = userid + ) + db.add(db_flowhistory) db.commit() db.refresh(db_app) return db_app return None def change_appversion(self,db: Session, domainurl:str,appid:str,version:int,userid:int): - db_app = self.get_app(db,domainurl,appid) - db_appversion = dbappversion.get_app_by_version(db,domainurl,appid,version) - if db_appversion and db_app: - db_app.version = version - db_app.updateuserid = userid - db.add(db_app) + db_app = self.get_app(db, domainurl, appid) + if not db_app: + return None + db_appversion = dbappversion.get_app_by_version(db, domainurl, appid, version) + if not db_appversion: + return None + db_app.version = version + db_app.updateuserid = userid + db.add(db_app) - flows = dbflow.get_flows_by_appid(db,domainurl,appid) #select(models.Flow).filter(and_(models.Flow.domainurl == appedit.domainurl,models.App.appid == appedit.appid)) - for flow in flows: - db.delete(flow) - flows = dbflowhistory.get_flows_by_appid_version(db,domainurl,appid,version) #select(models.Flow).filter(and_(models.Flow.domainurl == appedit.domainurl,models.App.appid == appedit.appid)) - for flow in flows: - db_flow = models.Flow( - flowid = flow.flowid, - appid = flow.appid, - eventid = flow.eventid, - domainurl = flow.domainurl, - name = flow.name, - content = flow.content, - updateuserid = userid, - createuserid = userid - ) - db.add(db_flow) - - db.commit() - db.refresh(db_app) - return db_app - return None + flow = dbflow.get_flows_by_appid(db, domainurl, appid) + if not flow: + return None + flowhistory = dbflowhistory.get_flows_by_appid_version(db, domainurl, appid, version) + if not flowhistory: + return None + flow.flowid = flowhistory.flowid + flow.eventid=flowhistory.eventid + flow.name=flowhistory.name + flow.content=flow.content + flow.updateuserid=userid + db.add(flow) + db.commit() + db.refresh(db_app) + return db_app def delete_app(self,db: Session, domainurl: str,appid: str ): db_app =self.get_app(db,domainurl,appid) if db_app: + db_flow = dbflow.get_flows_by_appid(db,domainurl,appid) + if db_flow: + db.delete(db_flow) db.delete(db_app) - db_flows = dbflow.get_flows_by_appid(db,domainurl,appid) - for flow in db_flows: - db.delete(flow) db.commit() return db_app return None diff --git a/backend/app/tests/test_user_app.py b/backend/app/tests/test_user_app.py index aed702b..297ae7e 100644 --- a/backend/app/tests/test_user_app.py +++ b/backend/app/tests/test_user_app.py @@ -54,8 +54,9 @@ def test_appversions_update(test_client,test_domain,test_app_id,login_user): "appid": test_app_id } response = test_client.post("/api/apps", json=app_version,headers={"Authorization": "Bearer " + login_user}) - assert response.status_code == 200 data = response.json() + logging.error(data) + assert response.status_code == 200 assert "data" in data assert data["data"] is not None assert data["data"]["domainurl"] == test_domain.url @@ -104,7 +105,8 @@ def test_appversions_change(test_client,test_domain,test_app_id,login_user): def test_delete_app(test_client,test_app_id,login_user): response = test_client.delete("/api/apps/"+ test_app_id, headers={"Authorization": "Bearer " + login_user}) - assert response.status_code == 200 data = response.json() + logging.error(data) + assert response.status_code == 200 assert "data" in data assert data["data"] is not None \ No newline at end of file