From 5fe51e03bbd28ddd07c29d8fe4125d69325cfa78 Mon Sep 17 00:00:00 2001 From: Untone Date: Sat, 18 May 2024 15:40:15 +0300 Subject: [PATCH] fix-get-stat --- resolvers/stat.py | 19 ++++++++++--------- services/search.py | 8 ++++++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/resolvers/stat.py b/resolvers/stat.py index 074df802..713a72fd 100644 --- a/resolvers/stat.py +++ b/resolvers/stat.py @@ -1,4 +1,4 @@ -from sqlalchemy import and_, distinct, func, join, select +from sqlalchemy import and_, distinct, func, join, select, CompoundSelect from sqlalchemy.orm import aliased from orm.author import Author, AuthorFollower @@ -180,16 +180,17 @@ def get_author_comments_stat(author_id: int): def get_with_stat(q): records = [] try: - is_author = f"{q}".lower().startswith("select author") - # is_topic = f"{q}".lower().startswith("select topic") - result = [] - if is_author: - q = add_author_stat_columns(q) - else: - q = add_topic_stat_columns(q) with local_session() as session: - result = session.execute(q) + # Convert the CompoundSelect object to a Query object + if isinstance(q, CompoundSelect): + q = session.query().from_statement(q) + # detect author + is_author = f"{q}".lower().startswith("select author") + q = add_author_stat_columns(q) if is_author else add_topic_stat_columns(q) + + # execute query + result = session.execute(q) for cols in result: entity = cols[0] stat = dict() diff --git a/services/search.py b/services/search.py index 772df765..5a97906b 100644 --- a/services/search.py +++ b/services/search.py @@ -138,13 +138,17 @@ class SearchService: result = json.loads(result) if isinstance(result, dict): mapping = result.get(self.index_name, {}).get("mappings") - logger.debug(f"Найдена структура индексации: {mapping['properties'].keys()}") + logger.debug( + f"Найдена структура индексации: {mapping['properties'].keys()}" + ) if ( mapping and mapping["properties"].keys() != expected_mapping["properties"].keys() ): - logger.debug(f"Ожидаемая структура индексации: {expected_mapping}") + logger.debug( + f"Ожидаемая структура индексации: {expected_mapping}" + ) logger.warn("[!!!] Требуется переиндексация всех данных") self.delete_index() self.client = None