2020# pylint: disable=attribute-defined-outside-init,protected-access
2121
2222
23+ def db_upgrade (func ):
24+ """upgrade the migration"""
25+ def inner (* args , ** kwargs ):
26+ reference = args [0 ]
27+ item = '''SELECT value FROM settings WHERE key='version';'''
28+ parameters = ''
29+ reference .cur .execute (item , parameters )
30+ func (reference , int (reference .cur .fetchall ()[0 ][0 ]))
31+ return inner
32+
33+
2334class sqlThread (threading .Thread ):
2435 """A thread for all SQL operations"""
2536
@@ -41,6 +52,14 @@ def update_sent(self):
4152 '''update sent set status='broadcastqueued' where status='broadcastpending' ''' )
4253 self .conn .commit ()
4354
55+ @db_upgrade
56+ def upgrade_migrations (self , currentVersion ):
57+ versionList = ['versionThree' , 'versionTwo' , 'versionThree' ,
58+ 'versionFour' , 'versionFive' , 'versionSix' , 'versionSeven' ,
59+ 'versionEight' , 'versionNine' , 'versionTen' ]
60+ if currentVersion < 11 :
61+ getattr (self , versionList [currentVersion - 1 ])()
62+
4463 def versionTwo (self ):
4564 """
4665 method for getting rid of the first20bytesofencryptedmessage field in
@@ -393,20 +412,7 @@ def run(self): # pylint: disable=too-many-locals, too-many-branches, too-many-s
393412
394413 self .update_sent ()
395414
396- item = '''SELECT value FROM settings WHERE key='version';'''
397- parameters = ''
398- self .cur .execute (item , parameters )
399- currentVersion = int (self .cur .fetchall ()[0 ][0 ])
400- versionDict = {
401- 1 : self .versionThree , 2 : self .versionTwo ,
402- 3 : self .versionThree , 4 : self .versionFour ,
403- 5 : self .versionFive , 6 : self .versionSix ,
404- 7 : self .versionSeven , 8 : self .versionEight ,
405- 9 : self .versionNine , 10 : self .versionTen ,
406- }
407-
408- if currentVersion in versionDict .keys ():
409- versionDict [currentVersion ]()
415+ self .upgrade_migrations ()
410416
411417 # Are you hoping to add a new option to the keys.dat file of existing
412418 # Bitmessage users or modify the SQLite database? Add it right
0 commit comments