bugfix change_appversion Unique Error

This commit is contained in:
2024-12-10 11:27:30 +09:00
parent a3df6c4b37
commit 9eec7e835d
3 changed files with 50 additions and 50 deletions

View File

@@ -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

View File

@@ -17,7 +17,7 @@ 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()
@@ -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,8 +111,9 @@ class dbapp(crudbase):
db.add(appversion)
db.add(db_app)
flows = dbflow.get_flows_by_appid(db,domainurl,newversion.appid)
for flow in flows:
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,
@@ -132,41 +133,38 @@ class dbapp(crudbase):
def change_appversion(self,db: Session, domainurl:str,appid:str,version:int,userid:int):
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 db_appversion and db_app:
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)
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
return None
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

View File

@@ -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