app history
This commit is contained in:
@@ -11,6 +11,16 @@ from app.core.common import ApiReturnPage
|
||||
from app.db import models, schemas
|
||||
from app.core.security import chacha20Decrypt, get_password_hash
|
||||
|
||||
|
||||
class dbflowhistory(crudbase):
|
||||
def __init__(self):
|
||||
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()
|
||||
|
||||
dbflowhistory = dbflowhistory()
|
||||
|
||||
class dbflow(crudbase):
|
||||
def __init__(self):
|
||||
super().__init__(model=models.Flow)
|
||||
@@ -18,7 +28,7 @@ class dbflow(crudbase):
|
||||
def get_domain_apps(self):
|
||||
return None
|
||||
|
||||
def get_domain_app_by_appid(self,db: Session,domainurl:str,appid:str):
|
||||
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,6 +68,16 @@ class dbappversion(crudbase):
|
||||
|
||||
def get_appversions(self,domainurl:str,appid:str):
|
||||
return super().get_by_conditions({"domainurl":domainurl,"appid":appid})
|
||||
|
||||
def get_app_by_version(self,db: Session,domainurl:str,appid:str,version:int):
|
||||
return db.execute(super().get_by_conditions({"domainurl":domainurl,"appid":appid,"version":version})).scalars().first()
|
||||
|
||||
def get_app_latestversion(self,db: Session,domainurl:str,appid:str):
|
||||
appversion = db.execute(super().get_by_conditions({"domainurl":domainurl,"appid":appid},"version","desc")).scalars().first()
|
||||
if appversion:
|
||||
return appversion.version
|
||||
else:
|
||||
return 0
|
||||
|
||||
dbappversion = dbappversion()
|
||||
|
||||
@@ -71,49 +91,77 @@ class dbapp(crudbase):
|
||||
def get_apps(self,db: Session,domainurl:str):
|
||||
return db.execute(super().get_by_conditions({"domainurl":domainurl})).scalars().all()
|
||||
|
||||
def update_appversion(self,db: Session, appedit: schemas.AppVersion,userid:int):
|
||||
db_app = db.execute(select(models.App).filter(and_(models.App.domainurl == appedit.domainurl,models.App.appid == appedit.appid))).scalars().first()
|
||||
if not db_app:
|
||||
return db_app
|
||||
|
||||
db_app.version = db_app.version + 1
|
||||
appversion = models.AppVersion(
|
||||
domainurl = appedit.domainurl,
|
||||
appid=appedit.appid,
|
||||
appname=db_app.appname,
|
||||
version = db_app.version,
|
||||
versionname = appedit.versionname,
|
||||
comment = appedit.comment,
|
||||
updateuserid = userid,
|
||||
createuserid = userid
|
||||
)
|
||||
db.add(appversion)
|
||||
db.add(db_app)
|
||||
|
||||
flows = dbflow.get_domain_app_by_appid(db,appedit.domainurl,appedit.appid) #select(models.Flow).filter(and_(models.Flow.domainurl == appedit.domainurl,models.App.appid == appedit.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
|
||||
def update_appversion(self,db: Session,domainurl, newversion: schemas.VersionUpdate,userid:int):
|
||||
db_app = self.get_app(db,domainurl,newversion.appid)
|
||||
if db_app:
|
||||
db_app.version = dbappversion.get_app_latestversion(db,domainurl,newversion.appid)+1
|
||||
appversion = models.AppVersion(
|
||||
domainurl = db_app.domainurl,
|
||||
appid=db_app.appid,
|
||||
appname=db_app.appname,
|
||||
version = db_app.version,
|
||||
versionname = newversion.versionname,
|
||||
comment = newversion.comment,
|
||||
updateuserid = userid,
|
||||
createuserid = userid
|
||||
)
|
||||
db.add(db_flowhistory)
|
||||
db.add(appversion)
|
||||
db.add(db_app)
|
||||
|
||||
db.commit()
|
||||
db.refresh(db_app)
|
||||
return 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)
|
||||
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)
|
||||
|
||||
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(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.delete(db_app)
|
||||
db_flows = dbflow.get_domain_app_by_appid(db,domainurl,appid)
|
||||
db_flows = dbflow.get_flows_by_appid(db,domainurl,appid)
|
||||
for flow in db_flows:
|
||||
db.delete(flow)
|
||||
db.commit()
|
||||
|
||||
Reference in New Issue
Block a user