Ejemplo n.º 1
0
 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])]
Ejemplo n.º 2
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
Ejemplo n.º 3
0
    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]
Ejemplo n.º 4
0
 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