Fixed issue with database versions

This commit is contained in:
Collin R
2021-03-07 22:34:08 -08:00
parent 4305e3f619
commit 9ec92a23c7

View File

@@ -9,9 +9,8 @@ import sqlite3 as sqlite
def transaction(func): def transaction(func):
"""Use this decorator on any methods that needs to query the database to """Use this decorator on any methods that needs to query the database to ensure that connections
ensure that connections are properly opened and closed, without being are properly opened and closed, without being left open unnecessarily.
left open unnecessarily.
""" """
@functools.wraps(func) @functools.wraps(func)
def newfunc(self, *args, **kwargs): def newfunc(self, *args, **kwargs):
@@ -49,6 +48,8 @@ def transaction(func):
### Classes ### ### Classes ###
# @functools.total_ordering
class DatabaseVersion: class DatabaseVersion:
PRE_RELEASE_NAME_ORDER_NUMBER = { PRE_RELEASE_NAME_ORDER_NUMBER = {
@@ -66,9 +67,21 @@ class DatabaseVersion:
self.pre_release_number = pre_release_number self.pre_release_number = pre_release_number
def __lt__(self, other): def __lt__(self, other):
self_tuple = (self.major, self.minor, self.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[self.pre_release_name], self.pre_release_number) # self_tuple = (self.major, self.minor, self.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[self.pre_release_name], self.pre_release_number)
other_tuple = (other.major, other.minor, other.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[other.pre_release_name], other.pre_release_number) # other_tuple = (other.major, other.minor, other.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[other.pre_release_name], other.pre_release_number)
return self_tuple < other_tuple return self._to_tuple() < other._to_tuple()
def __eq__(self, other):
# self_tuple = (self.major, self.minor, self.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[self.pre_release_name], self.pre_release_number)
# other_tuple = (other.major, other.minor, other.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[other.pre_release_name], other.pre_release_number)
return self._to_tuple() == other._to_tuple()
def __hash__(self):
# self_tuple = (self.major, self.minor, self.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[self.pre_release_name], self.pre_release_number)
return hash(self._to_tuple())
def _to_tuple(self):
return (self.major, self.minor, self.patch, self.PRE_RELEASE_NAME_ORDER_NUMBER[self.pre_release_name], self.pre_release_number)
def __str__(self): def __str__(self):
version_string = f'{self.major}.{self.minor}.{self.patch}' version_string = f'{self.major}.{self.minor}.{self.patch}'
@@ -200,7 +213,7 @@ class Database:
# for row in self.cursor.fetchmany(): # for row in self.cursor.fetchmany():
# logging.info(tuple(row)) # logging.info(tuple(row))
self.cursor.execute("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'bot_version'") self.cursor.execute("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'bot_version'")
has_version_table = (self.cursor.rowcount == 1) has_version_table = self.cursor.fetchone()
if not has_version_table: if not has_version_table:
current_version = DatabaseVersion(0, 1, 0) current_version = DatabaseVersion(0, 1, 0)
else: else: