Adjusted bot functions for new backend

This commit is contained in:
Remy Moll
2022-01-01 22:41:54 +01:00
parent 1c5092065b
commit 621c8cf6e3
11 changed files with 87 additions and 107 deletions

View File

@@ -22,19 +22,17 @@ db_connection = PooledMySQLDatabase(
)
def auto_connect_db(action):
def decorated(func):
def wrapper(*args, **kwargs):
#before:
db_connection.connect()
ret = func(*args, **kwargs)
#after:
db_connection.close()
# also, action is in scope now
return ret
return wrapper
return decorated
def auto_connect_db(func):
def wrapper(*args, **kwargs):
#before:
db_connection.connect()
ret = func(*args, **kwargs)
#after:
db_connection.close()
# also, action is in scope now
return ret
return wrapper
@@ -57,20 +55,21 @@ class DatabaseUtils:
else: # does not exist
return -1
@auto_connect_db
def chat_log(self, **kwargs):
models.ChatMetric(**kwargs)
@auto_connect_db
def list_get(self, list_name=""):
if not list_name: # return all
return models.List.select()
cursor = models.List.select(models.List.name).execute()
return [k.name for k in cursor]
else:
return models.List.get(models.List.name == list_name)
return models.List.get(models.List.name == list_name).content_as_list
def list_update(self, list_name, append="", replace=[]):
if replace:
@auto_connect_db
def list_update(self, list_name, append="", replace=None):
if replace != None:
models.List.get(models.List.name == list_name).set_content(replace)
elif append:
l_obj = models.List.get(models.List.name == list_name)
@@ -80,9 +79,14 @@ class DatabaseUtils:
else:
logger.warning("Empty update_list() query was made. Ignoring")
@auto_connect_db
def list_create(self, list_name):
models.List(name=list_name).save()
@auto_connect_db
def list_delete(self, list_name):
models.List.delete().where(self.db.lists.name == list_name).execute()
models.List.delete().where(models.List.name == list_name).execute()
@auto_connect_db
def sensor_log(self, **kwargs):
models.SensorMetric(**kwargs).save()

View File

@@ -45,11 +45,12 @@ class ErrorMetric(Metric):
class List(DBModel):
name = CharField(unique=True)
content = TextField() # unlimited length, use to serialise list into
content = TextField(default="") # unlimited length, use to serialise list into
@property
def content_as_list(self):
return json.loads(self.content)
return json.loads(self.content or '[]')
def set_content(self, list_content):
self.content = json.dumps(list_content)
self.content = json.dumps(list_content)
self.save()