From 13051e6701e5283a568a9fcd2c17fd51aeb4e1de Mon Sep 17 00:00:00 2001 From: ZKWolf <34097612+wolfswolke@users.noreply.github.com> Date: Mon, 29 Jul 2024 19:59:15 +0200 Subject: [PATCH] Added migration var to user and code for migration v1 --- src/logic/mongodb_handler.py | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/logic/mongodb_handler.py b/src/logic/mongodb_handler.py index cf82d90..2972f08 100644 --- a/src/logic/mongodb_handler.py +++ b/src/logic/mongodb_handler.py @@ -5,6 +5,7 @@ from logic.logging_handler import logger class Mongo: def __init__(self): + self.migration_level = 1 self.dyn_server = "" self.dyn_db = "" self.dyn_collection = "" @@ -26,6 +27,7 @@ class Mongo: 'tutorial_completed': False, 'last_runner': 'Runner.Smoke', 'last_hunter': 'Hunter.Inquisitor', + 'migration_status': 1, 'hasPlayedDeathGarden1': False, 'RunnerGroupA': { 'prestige': 0, @@ -218,6 +220,28 @@ class Mongo: self.dyn_db = db self.dyn_collection = collection + def migration_status(self, userId, status): + if status == 0: + try: + client = pymongo.MongoClient(self.dyn_server) + dyn_client_db = client[self.dyn_db] + dyn_collection = dyn_client_db[self.dyn_collection] + existing_document = dyn_collection.find_one({'userId': userId}) + if existing_document: + new_userId = str(uuid.uuid4()) + dyn_collection.update_one({'userId': userId}, {'$set': {'migration_status': 1}}) + dyn_collection.update_one({'userId': userId}, {'$set': {'userId': new_userId}}) + client.close() + return True + else: + client.close() + return False + except Exception as e: + logger.graylog_logger(level="error", handler="mongodb_migration_status", message=e) + return None + else: + return True + def user_db_handler(self, steamid): try: client = pymongo.MongoClient(self.dyn_server) @@ -234,6 +258,13 @@ class Mongo: if key not in existing_document: existing_document[key] = default_value logger.graylog_logger(level="info", handler="mongodb", message=f"New key added to database: {key} for user {steamid}") + if key == "migration_status": + ret = self.migration_status(userId, 0) + if ret: + logger.graylog_logger(level="info", handler="mongodb", message=f"Migration status updated for user {steamid}") + return self.user_db_handler(steamid) + else: + logger.graylog_logger(level="error", handler="mongodb_migration_status", message=f"Migration status not updated for user {steamid}") if type(default_value) == dict: for k, val in default_value.items(): @@ -241,6 +272,14 @@ class Mongo: existing_document[key][k] = val logger.graylog_logger(level="info", handler="mongodb", message=f"New key added to database: {k} for user {steamid}") + migration_status = existing_document['migration_status'] + if migration_status != self.migration_level: + ret = self.migration_status(userId, migration_status) + if ret: + logger.graylog_logger(level="info", handler="mongodb", message=f"Migration status updated for user {steamid}") + return self.user_db_handler(steamid) + else: + logger.graylog_logger(level="error", handler="mongodb_migration_status", message=f"Migration status not updated for user {steamid}") dyn_collection.replace_one({'steamid': steamid}, existing_document) client.close()