Move data skeleton creation out of opening highscores data.

This commit is contained in:
alwayscompiling
2022-07-22 21:52:13 -04:00
parent b78eb7b9bf
commit df80eb2952
+25 -11
View File
@@ -7,6 +7,29 @@ HIGHSCORES_CONFIG_FILE = "highscores_config.json"
HIGHSCORES_DATA_FILE = "highscores_data.json" HIGHSCORES_DATA_FILE = "highscores_data.json"
def create_highscore_data_entry(guild_id: int) -> dict:
"""
Creates a skeleton entry for highscores data for given guild
@param guild_id: the guild the data skeleton is for
@return: dict skeleton entry
"""
# create the dict
skeleton = {"highscore_channel_id": -1, "verification_channel_id": -1, "username_length": 12}
config: dict = open_highscores_config()
for boss, categories in config["highscore_table"].items():
skeleton["tables"][boss] = {"message_id": 0}
boss_categories = {}
for category in categories:
rank_list = []
boss_categories[category] = rank_list
skeleton["tables"][boss]["categories"] = boss_categories
# return the entire skeleton as a dict under the guild id
# turning guild id into string because json doesn't support ints as object keys.
return {str(guild_id): skeleton}
def create_message_map(data: dict): def create_message_map(data: dict):
""" """
Creates a message map from input highscores data. Creates a message map from input highscores data.
@@ -35,23 +58,14 @@ def open_highscores_config():
def open_highscores_data(): def open_highscores_data():
""" """
Opens a highscores_data.json file if one exists, otherwise creates a skeleton of the data. Opens a highscores_data.json file if one exists, otherwise returns empty dict.
@return: dict of highscores data. @return: dict of highscores data.
""" """
if os.path.exists(HIGHSCORES_DATA_FILE): if os.path.exists(HIGHSCORES_DATA_FILE):
with open(HIGHSCORES_DATA_FILE, encoding="utf-8", mode="r") as file: with open(HIGHSCORES_DATA_FILE, encoding="utf-8", mode="r") as file:
data = json.load(file) data = json.load(file)
else: else:
# create the json object data = {}
data = {"highscore_channel_id": -1, "verification_channel_id": -1, "username_length": 12}
config: dict = open_highscores_config()
for boss, categories in config["highscore_table"].items():
data["tables"][boss] = {"message_id": 0}
boss_categories = {}
for category in categories: # pylint: disable=unused-variable
rank_list = []
boss_categories[category] = rank_list
data["tables"][boss]["categories"] = boss_categories
return data return data