summaryrefslogtreecommitdiff
path: root/server/alias.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/alias.py')
-rw-r--r--server/alias.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/server/alias.py b/server/alias.py
new file mode 100644
index 0000000..c5a19b9
--- /dev/null
+++ b/server/alias.py
@@ -0,0 +1,90 @@
+'''
+ A utility class to manage aliases &
+ interact with the database.
+
+ Verified: 2021 February 7
+ * Follows PEP8
+ * Tested Platforms
+ * Windows 10
+'''
+
+from server.database import Database
+from server.error import ServerError
+from server.console import Console
+from shared.state import Static
+
+
+class Alias:
+
+ __TABLE_NAME = 'aliases'
+ __TABLE_KWARGS = {
+ 'key': 'text',
+ 'value': 'text'
+ }
+
+ def __init__(self, ret):
+ self.__ret = ret
+
+ self.__db = Database()
+ self.__db.create_table(Alias.__TABLE_NAME,
+ **Alias.__TABLE_KWARGS)
+ self.__db.commit()
+
+ self.__alias = self.__db.read(Alias.__TABLE_NAME)
+
+ @ServerError.quiet
+ def __del__(self):
+ self.__db.close()
+
+ def add(self, key, value):
+ if self.alias_exists(key):
+ return Console.printf('Alias key already exists',
+ Static.WARNING, ret=self.__ret)
+ else:
+ self.__db.write(Alias.__TABLE_NAME, (key, value))
+ self.__db.commit()
+
+ return Console.printf('Alias add complete',
+ Static.SUCCESS, ret=self.__ret)
+
+ def remove(self, key):
+ if self.alias_exists(key):
+ self.__db.delete(Alias.__TABLE_NAME, ('key', '=', key))
+ self.__db.commit()
+
+ return Console.printf('Alias remove complete',
+ Static.SUCCESS, ret=self.__ret)
+ else:
+ return Console.printf('Alias key does not exist',
+ Static.WARNING, ret=self.__ret)
+
+ def update(self, key, new_key, new_value):
+ if self.alias_exists(key):
+ self.__db.execute('DELETE FROM {} WHERE key=? OR key=?'.format(
+ Alias.__TABLE_NAME), (key, new_key))
+ self.__db.write(Alias.__TABLE_NAME, (new_key, new_value))
+ self.__db.commit()
+
+ return Console.printf('Alias value update complete',
+ Static.SUCCESS, ret=self.__ret)
+ else:
+ return Console.printf('Alias key does not exist',
+ Static.WARNING, ret=self.__ret)
+
+ def list(self):
+ if self.__alias:
+ return Console.tabulate(self.__alias,
+ ('Key', 'Value'), self.__ret)
+ else:
+ return Console.printf('No aliases exists',
+ Static.INFO, ret=self.__ret)
+
+ def alias_exists(self, compare_key, ret_value=False):
+ for key, value in self.__alias:
+ if compare_key == key:
+ if ret_value:
+ return value
+ else:
+ return True
+ else:
+ return False