diff --git a/db.py b/db.py deleted file mode 100644 index 676669e..0000000 --- a/db.py +++ /dev/null @@ -1,101 +0,0 @@ -import json -import os - - -class Utils: - - @staticmethod - def validate_json(path_to_json): - if not os.path.isfile(path_to_json): - with open(path_to_json, "w") as json_file: - json.dump({}, json_file) - else: - if os.path.getsize(path_to_json) == 0: - with open(path_to_json, "w") as json_file: - json.dump({}, json_file) - - class PathMagic: - - @staticmethod - def set(main_dict: dict, path: str, *, key: str, value): - def magic(alt_dict: dict, key: str): - if key in alt_dict.keys() and isinstance(alt_dict[key], dict): - return alt_dict - alt_dict[key] = {} - return alt_dict - main_dict_ref, i = main_dict, 0 - for dict_name in path.split("+"): - i += 1 - main_dict = magic(main_dict, dict_name)[dict_name] - if i == len(path.split("+")): - main_dict[key] = value - return main_dict_ref - - @staticmethod - def get(main_dict: dict, path: str, *, key, default=None): - for dict_name in path.split("+"): - try: - main_dict = main_dict[dict_name] - except (KeyError, TypeError, AttributeError): - return default - return main_dict.get(key, default) - - @staticmethod - def rem(main_dict: dict, path: str, *, key): - main_dict_ref, i = main_dict, 0 - for dict_name in path.split("+"): - try: - i += 1 - main_dict = main_dict[dict_name] - if i == len(path.split("+")): - main_dict.pop(key, None) - except (KeyError, TypeError, AttributeError): - return main_dict_ref - return main_dict_ref - -class JSONx: - - def __init__(self, path_to_json: str): - self.path_to_json = path_to_json - self.utils = Utils - self.utils.validate_json(path_to_json) - - 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: - if pathmagic == "": - json_data[key] = value - json.dump(json_data, json_file, indent=4) - else: - json.dump(self.utils.PathMagic.set(json_data, pathmagic, key=key, value=value), json_file, indent=4) - - def get(self, key: str, *, default=None, 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) - if pathmagic == "": - return json_data.get(key, default) - else: - return self.utils.PathMagic.get(json_data, pathmagic, key=key, default=default) - - def all(self): - self.utils.validate_json(self.path_to_json) - with open(self.path_to_json, mode="r") as json_file: - return json.load(json_file) - - def rem(self, key: str, *, 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: - if pathmagic == "": - json_data.pop(key, None) - json.dump(json_data, json_file, indent=4) - else: - json.dump(self.utils.PathMagic.rem(json_data, pathmagic, key=key), json_file, indent=4) - - def nuke(self): - with open(self.path_to_json, mode="w") as json_file: - json.dump({}, json_file)