From 8041be1feab8658fb43bc0ec8cf6eb75e735069e Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Sun, 19 Mar 2023 12:18:16 +0100 Subject: [PATCH 1/2] query all npcs at once --- truthinquiry/ext/database/dbutils.py | 4 ++-- truthinquiry/logic/game_logic.py | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/truthinquiry/ext/database/dbutils.py b/truthinquiry/ext/database/dbutils.py index dd23659..3dc7506 100644 --- a/truthinquiry/ext/database/dbutils.py +++ b/truthinquiry/ext/database/dbutils.py @@ -22,13 +22,13 @@ def get_random_place() -> Place: """ return random.choice(db.session.query(Place).all()) -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..2bf160f 100644 --- a/truthinquiry/logic/game_logic.py +++ b/truthinquiry/logic/game_logic.py @@ -277,11 +277,7 @@ 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) From 05295f30fb1ed18578804054a03a60757d9b2847 Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Sun, 19 Mar 2023 12:22:19 +0100 Subject: [PATCH 2/2] query all places at once --- truthinquiry/ext/database/dbutils.py | 4 ++-- truthinquiry/logic/game_logic.py | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/truthinquiry/ext/database/dbutils.py b/truthinquiry/ext/database/dbutils.py index 3dc7506..b362ddc 100644 --- a/truthinquiry/ext/database/dbutils.py +++ b/truthinquiry/ext/database/dbutils.py @@ -14,13 +14,13 @@ 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_npcs(n: int = 1) -> Npc : """ diff --git a/truthinquiry/logic/game_logic.py b/truthinquiry/logic/game_logic.py index 2bf160f..1e2b126 100644 --- a/truthinquiry/logic/game_logic.py +++ b/truthinquiry/logic/game_logic.py @@ -282,11 +282,7 @@ def generate_game_data(lang: str) -> tuple[dict, dict]: 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"] = {}