From ee145f449bde0fbaf146f896bf1c40bc0a196cd8 Mon Sep 17 00:00:00 2001 From: RGBCube <78925721+RGBCube@users.noreply.github.com> Date: Sat, 15 Jan 2022 15:20:57 +0300 Subject: [PATCH] pathmagic --- db.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/db.py b/db.py index 2b81cd5..f046f4f 100644 --- a/db.py +++ b/db.py @@ -13,6 +13,21 @@ class Utils: with open(path_to_json, "w") as json_file: json.dump({}, json_file) + def path_magic(self, main_dict: dict, path: str, *, key: str, value): + def magic(alt_dict: dict, key: str): + if key in alt_dict.keys(): + return alt_dict + else: + alt_dict[key] = {} + return alt_dict + exec_str = "main_dict" + for dict_name in path.split("+"): + exec_str = f"magic({exec_str}, '{dict_name}')['{dict_name}']" + if path.index(dict_name) == len(path) - 1: + exec_str = f"{exec_str}['{key}'] = {value}" + exec(exec_str) + return main_dict + class ClutterDB: def __init__(self, path_to_json: str): @@ -20,13 +35,16 @@ class ClutterDB: self.utils = Utils() self.utils.validate_json(path_to_json) - def set(self, key: str, value): + def set(self, key: str, value, *, pathmagic=""): self.utils.validate_json(self.path_to_json) with open(self.path_to_json, mode="r") as json_file: json_data = json.load(json_file) with open(self.path_to_json, mode="w") as json_file: - json_data[key] = value - json.dump(json_data, json_file, indent=4) + if pathmagic == "": + json_data[key] = value + json.dump(json_data, json_file, indent=4) + else: + json.dump(self.utils.path_magic(json_data, pathmagic, key=key, value=value), json_file, indent=4) def get(self, key: str, *, default=None): self.utils.validate_json(self.path_to_json)