Skip to content

Commit 7fa12e4

Browse files
committed
implemented decorator function in class_sqlThread module
1 parent 9bc652b commit 7fa12e4

File tree

1 file changed

+40
-28
lines changed

1 file changed

+40
-28
lines changed

src/class_sqlThread.py

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,19 @@
2020
# pylint: disable=attribute-defined-outside-init,protected-access
2121

2222

23-
def db_upgrade(func):
23+
upgrade_dict = {}
24+
25+
26+
def db_upgrade(**kwargs):
2427
"""upgrade the migration"""
25-
def inner(*args, **kwargs):
28+
version_dict = kwargs
29+
def inner(func):
2630
"""this is inner method"""
27-
reference = args[0]
28-
item = '''SELECT value FROM settings WHERE key='version';'''
29-
parameters = ''
30-
reference.cur.execute(item, parameters)
31-
func(reference, int(reference.cur.fetchall()[0][0]))
31+
upgrade_dict.update(version_dict)
32+
def wrapped(*args):
33+
"""used for calling main method"""
34+
func(*args)
35+
return wrapped
3236
return inner
3337

3438

@@ -53,18 +57,8 @@ def update_sent(self):
5357
'''update sent set status='broadcastqueued' where status='broadcastpending' ''')
5458
self.conn.commit()
5559

56-
@db_upgrade
57-
def upgrade_migrations(self, currentVersion):
58-
"""This method is for upgrading migrations"""
59-
versionList = [
60-
'versionThree', 'versionTwo', 'versionThree',
61-
'versionFour', 'versionFive', 'versionSix', 'versionSeven',
62-
'versionEight', 'versionNine', 'versionTen'
63-
]
64-
if currentVersion < 11:
65-
getattr(self, versionList[currentVersion - 1])()
66-
67-
def versionTwo(self):
60+
@db_upgrade(version_two=2)
61+
def version_two(self):
6862
"""
6963
method for getting rid of the first20bytesofencryptedmessage field in
7064
the inventory table.
@@ -92,7 +86,8 @@ def versionTwo(self):
9286
parameters = (3,)
9387
self.cur.execute(item, parameters)
9488

95-
def versionThree(self):
89+
@db_upgrade(version_three=3)
90+
def version_three(self):
9691
"""Adding a new column to the inventory table to store tags."""
9792
logger.debug(
9893
'In messages.dat database, adding tag field to'
@@ -104,7 +99,8 @@ def versionThree(self):
10499
parameters = (4,)
105100
self.cur.execute(item, parameters)
106101

107-
def versionFour(self):
102+
@db_upgrade(versio_four=4)
103+
def versio_four(self):
108104
"""
109105
Add a new column to the pubkeys table to store the address version.
110106
We're going to trash all of our pubkeys and let them be redownloaded.
@@ -119,7 +115,8 @@ def versionFour(self):
119115
parameters = (5,)
120116
self.cur.execute(item, parameters)
121117

122-
def versionFive(self):
118+
@db_upgrade(versio_five=5)
119+
def versio_five(self):
123120
"""
124121
Add a new table: objectprocessorqueue with which to hold objects
125122
that have yet to be processed if the user shuts down Bitmessage.
@@ -132,7 +129,8 @@ def versionFive(self):
132129
parameters = (6,)
133130
self.cur.execute(item, parameters)
134131

135-
def versionSix(self):
132+
@db_upgrade(version_six=6)
133+
def version_six(self):
136134
"""
137135
changes related to protocol v3
138136
In table inventory and objectprocessorqueue, objecttype is now
@@ -156,7 +154,8 @@ def versionSix(self):
156154
logger.debug(
157155
'Finished dropping and recreating the inventory table.')
158156

159-
def versionSeven(self):
157+
@db_upgrade(version_seven=7)
158+
def version_seven(self):
160159
"""
161160
The format of data stored in the pubkeys table has changed. Let's
162161
clear it, and the pubkeys from inventory, so that they'll
@@ -178,7 +177,8 @@ def versionSeven(self):
178177
self.cur.execute(query, parameters)
179178
logger.debug('Finished clearing currently held pubkeys.')
180179

181-
def versionEight(self):
180+
@db_upgrade(version_eight=8)
181+
def version_eight(self):
182182
"""
183183
Add a new column to the inbox table to store the hash of
184184
the message signature. We'll use this as temporary message UUID
@@ -194,7 +194,8 @@ def versionEight(self):
194194
parameters = (9,)
195195
self.cur.execute(item, parameters)
196196

197-
def versionNine(self):
197+
@db_upgrade(version_nine=9)
198+
def version_nine(self):
198199
"""
199200
We'll also need a `sleeptill` field and a `ttl` field. Also we
200201
can combine the pubkeyretrynumber and msgretrynumber into one.
@@ -259,7 +260,8 @@ def versionNine(self):
259260
' and removing the hash field.')
260261
self.cur.execute('''update settings set value=10 WHERE key='version';''')
261262

262-
def versionTen(self):
263+
@db_upgrade(version_ten=10)
264+
def version_ten(self):
263265
"""Update the address colunm to unique in addressbook table"""
264266
logger.debug(
265267
'In messages.dat database, updating address column to UNIQUE'
@@ -416,7 +418,17 @@ def run(self): # pylint: disable=too-many-locals, too-many-branches, too-many-s
416418

417419
self.update_sent()
418420

419-
self.upgrade_migrations()
421+
item = '''SELECT value FROM settings WHERE key='version';'''
422+
parameters = ''
423+
self.cur.execute(item, parameters)
424+
currentVersion = int(self.cur.fetchall()[0][0])
425+
temp_dict = {val:key for key,val in upgrade_dict.items()}
426+
427+
if temp_dict.get(currentVersion) or currentVersion == 1:
428+
if currentVersion == 1:
429+
getattr(self, temp_dict.get(3))()
430+
else:
431+
getattr(self, temp_dict.get(currentVersion))()
420432

421433
# Are you hoping to add a new option to the keys.dat file of existing
422434
# Bitmessage users or modify the SQLite database? Add it right

0 commit comments

Comments
 (0)