def get_dungeons_from_nickname(self, name: str, *, server: Server) -> List[DungeonModel]: if name not in DUNGEON_NICKNAMES: return [] sub_id = DUNGEON_NICKNAMES.get(name) mega = self.database.query_many( format_with_suffix(NICKNAME_QUERY, server), (sub_id, )) ems = [] for enc in mega: data = self.database.query_one( format_with_suffix(ENEMY_DATA_QUERY, server), (enc["enemy_id"], )) if data is not None: edm = EnemyDataModel(**data) else: edm = None ems.append(EncounterModel(edm, **enc)) sm = SubDungeonModel(ems, sub_dungeon_id=mega[0]['sub_dungeon_id'], dungeon_id=mega[0]['dungeon_id'], name_ja=mega[0]['sub_name_ja'], name_en=mega[0]['sub_name_en'], name_ko=mega[0]['sub_name_ko'], technical=mega[0]['technical']) return [DungeonModel([sm], **mega[0])]
def get_dungeons_from_name(self, name: str, *, server: Server) -> List[DungeonModel]: dungeons_result = self.database.query_many( format_with_suffix(DUNGEON_QUERY, server), (name + "%", )) dungeons = [] for d in dungeons_result: dungeons.append(DungeonModel([], **d)) for dm in dungeons: subs = self.database.query_many( format_with_suffix(SUB_DUNGEON_QUERY, server), (dm.dungeon_id, )) for s in subs: encounters = self.database.query_many( format_with_suffix(ENCOUNTER_QUERY, server), (s['sub_dungeon_id'], )) ems = [] for e in encounters: data = self.database.query_one( format_with_suffix(ENEMY_DATA_QUERY, server), (e["enemy_id"], )) if data is not None: edm = EnemyDataModel(**data) else: edm = None ems.append(EncounterModel(edm, **e)) dm.sub_dungeons.append(SubDungeonModel(ems, **s)) return dungeons
def get_all_enemy_data(self, *, server: Server = DEFAULT_SERVER) -> List[EnemyDataModel]: suffix = "" if server == Server.NA: pass # TODO: There's currently no servers for enemy data. # suffix = '_na' result = self.database.query_many(f"SELECT * FROM enemy_data{suffix}") return [EnemyDataModel(**r) for r in result]
def get_floor_from_sub_dungeon(self, sub_id: int, floor: int, *, server: Server) -> List[EncounterModel]: floor_query = self.database.query_many(format_with_suffix(SPECIFIC_FLOOR_QUERY, server), (sub_id, floor)) invade_query = self.database.query_many(format_with_suffix(SPECIFIC_FLOOR_QUERY, server), (sub_id, -1)) encounter_models = [] floor_query.extend(invade_query) for f in floor_query: data = self.database.query_one(format_with_suffix(ENEMY_DATA_QUERY, server), (f['enemy_id'],)) if data is not None: edm = EnemyDataModel(**data) else: edm = None encounter_models.append(EncounterModel(edm, **f)) return encounter_models