diff --git a/truthinquiry/ext/database/dbutils.py b/truthinquiry/ext/database/dbutils.py index dd23659..b362ddc 100644 --- a/truthinquiry/ext/database/dbutils.py +++ b/truthinquiry/ext/database/dbutils.py @@ -14,21 +14,21 @@ def get_text_from_lid(lang: str, lid: int) -> str: texts = db.session.query(Text).filter_by(LANG=lang, LID=lid).all() return random.choice(texts).TEXT -def get_random_place() -> Place: +def get_random_places(n) -> Place: """ Returns a random place from the database. :return: a Place object """ - return random.choice(db.session.query(Place).all()) + return random.sample(db.session.query(Place).all(), n) -def get_random_npc() -> Npc : +def get_random_npcs(n: int = 1) -> Npc : """ Returns a random npc from the database :return: a Npc object """ - return random.choice(db.session.query(Npc).all()) + return random.sample(db.session.query(Npc).all(), n) def get_npc_random_trait_id(npc_id: int) -> int: """ diff --git a/truthinquiry/logic/game_logic.py b/truthinquiry/logic/game_logic.py index d4731dc..1e2b126 100644 --- a/truthinquiry/logic/game_logic.py +++ b/truthinquiry/logic/game_logic.py @@ -277,20 +277,12 @@ def generate_game_data(lang: str) -> tuple[dict, dict]: data = {} data["npcs"] = {} reactions_table = {} - npcs = [] - while len(npcs) != 5: - npc = dbutils.get_random_npc() - if npc not in npcs: - npcs.append(npc) + npcs = list(dbutils.get_random_npcs(5)) for npc in npcs: data["npcs"][str(npc.NPC_ID)] = generate_npc_text(npc, lang) reactions_table[str(npc.NPC_ID)] = dbutils.get_npc_random_trait_id(npc) - places = [] - while len(places) != 3: - place = dbutils.get_random_place() - if place not in places: - places.append(place) + places = list(dbutils.get_random_places(3)) data["rooms"] = generate_place_data(npcs, places, lang) data["questions"] = {}