From 21af08a88600c0fa10807a4f854ab0190074e5bf Mon Sep 17 00:00:00 2001 From: mokaddem Date: Tue, 18 Jun 2019 09:39:22 +0200 Subject: [PATCH] chg: [updates] Improved database updates --- updates.py | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/updates.py b/updates.py index f4fa03e..a3fcf83 100644 --- a/updates.py +++ b/updates.py @@ -3,6 +3,10 @@ import os import configparser import logging +DATABASE_VERSION = [ + 1 +] + configfile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config/config.cfg') cfg = configparser.ConfigParser() @@ -21,18 +25,6 @@ serv_list = redis.StrictRedis( db=cfg.getint('RedisLIST', 'db')) # logger -# logDir = cfg.get('Log', 'directory') -# logfilename = cfg.get('Log', 'update_filename') -# logPath = os.path.join(logDir, logfilename) -# if not os.path.exists(logDir): -# os.makedirs(logDir) -# try: -# logging.basicConfig(filename=logPath, filemode='a', level=logging.INFO) -# except PermissionError as error: -# print(error) -# print("Please fix the above and try again.") -# sys.exit(126) -# update_logger = logging.getLogger(__name__) logDir = cfg.get('Log', 'directory') logfilename = cfg.get('Log', 'update_filename') logPath = os.path.join(logDir, logfilename) @@ -48,17 +40,34 @@ update_logger.addHandler(handler) def check_for_updates(): db_version = serv_redis_db.get(cfg.get('RedisDB', 'dbVersion')) - db_version = db_version if db_version is not None else 0 + db_version = int(db_version) if db_version is not None else 0 + updates_to_be_done = find_updates(db_version) + if len(updates_to_be_done) == 0: + update_logger.info('database up-to-date') + else: + for i in updates_to_be_done: + exec_updates(i) + + +def find_updates(db_version): + updates_to_be_done = [] + for i in DATABASE_VERSION: + if db_version < i: + updates_to_be_done.append(i) + return updates_to_be_done + + +def exec_updates(db_version): result = False - if db_version == 0: + if db_version == 1: result = apply_update_1() if result: serv_redis_db.set(cfg.get('RedisDB', 'dbVersion'), db_version+1) - update_logger.warning(f'Bumped dbVersion to {db_version+1}') + update_logger.warning(f'dbVersion sets to {db_version+1}') else: - update_logger.info('Database up-to-date') + update_logger.error(f'Something went wrong. {result}') # Data format changed. Wipe the key.