Fixed issue with database versions
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user