Implement a storage update mechanism (for FileStorage)

The idea is pretty simple: get the current database version and for each
older version, do what needs to be done in order to get to the next
version state. This will make schema changes transparent to the user in
case they are needed.
This commit is contained in:
Dan 2019-09-14 20:35:59 +02:00
parent 1a7d0b1b7e
commit ff9407aba1

View File

@ -67,6 +67,17 @@ class FileStorage(SQLiteStorage):
# noinspection PyTypeChecker # noinspection PyTypeChecker
self.update_peers(peers.values()) self.update_peers(peers.values())
def update(self):
version = self.version()
if version == 1:
with self.lock, self.conn:
self.conn.execute("DELETE FROM peers")
version += 1
self.version(version)
def open(self): def open(self):
path = self.database path = self.database
file_exists = path.is_file() file_exists = path.is_file()
@ -97,6 +108,8 @@ class FileStorage(SQLiteStorage):
if not file_exists: if not file_exists:
self.create() self.create()
else:
self.update()
with self.conn: with self.conn:
try: # Python 3.6.0 (exactly this version) is bugged and won't successfully execute the vacuum try: # Python 3.6.0 (exactly this version) is bugged and won't successfully execute the vacuum