diff --git a/resolvers/author.py b/resolvers/author.py index 79334f1e..dce67d9e 100644 --- a/resolvers/author.py +++ b/resolvers/author.py @@ -27,7 +27,7 @@ logger.setLevel(logging.DEBUG) def add_author_stat_columns(q): shout_author_aliased = aliased(ShoutAuthor) - q = q.outerjoin(shout_author_aliased, shout_author_aliased.author == Author.id).add_columns( + q = q.outerjoin(shout_author_aliased).add_columns( func.count(distinct(shout_author_aliased.shout)).label('shouts_stat') ) @@ -51,9 +51,9 @@ async def get_authors_from_query(q): for [author, shouts_stat, followers_stat, followings_stat] in session.execute(q): author.stat = { 'shouts': shouts_stat, + 'viewed': await ViewedStorage.get_author(author.slug), 'followers': followers_stat, 'followings': followings_stat, - 'viewed': await ViewedStorage.get_author(author.slug), } authors.append(author) return authors diff --git a/resolvers/reader.py b/resolvers/reader.py index 67d6f197..d142ca44 100644 --- a/resolvers/reader.py +++ b/resolvers/reader.py @@ -286,7 +286,9 @@ async def load_shouts_feed(_, info, options): # print(q.compile(compile_kwargs={"literal_binds": True})) - for [shout, reacted_stat, commented_stat, likes_stat, dislikes_stat, _last_comment] in session.execute(q).unique(): + for [shout, reacted_stat, commented_stat, likes_stat, dislikes_stat, _last_comment] in session.execute( + q + ).unique(): main_topic = ( session.query(Topic.slug) .join( @@ -306,7 +308,7 @@ async def load_shouts_feed(_, info, options): 'viewed': await ViewedStorage.get_shout(shout.slug), 'reacted': reacted_stat, 'commented': commented_stat, - 'rating': likes_stat - dislikes_stat + 'rating': likes_stat - dislikes_stat, } shouts.append(shout) @@ -383,7 +385,7 @@ async def get_shouts_from_query(q, author_id=None): 'reacted': reacted_stat, 'commented': commented_stat, 'rating': int(likes_stat or 0) - int(dislikes_stat or 0), - 'last_comment': last_comment + 'last_comment': last_comment, } return shouts diff --git a/services/auth.py b/services/auth.py index 22effd86..947e65b9 100644 --- a/services/auth.py +++ b/services/auth.py @@ -48,9 +48,9 @@ async def check_auth(req) -> str | None: } gql = { - 'query': f'query {operation}($params: ValidateJWTTokenInput!) {{' + - f'{query_name}(params: $params) {{ is_valid claims }} ' + - '}', + 'query': f'query {operation}($params: ValidateJWTTokenInput!) {{' + + f'{query_name}(params: $params) {{ is_valid claims }} ' + + '}', 'variables': variables, 'operationName': operation, } diff --git a/services/search.py b/services/search.py index 7efcaa1b..ee9e00f3 100644 --- a/services/search.py +++ b/services/search.py @@ -13,16 +13,12 @@ os_logger.setLevel(logging.INFO) logger = logging.getLogger('\t[services.search]\t') logger.setLevel(logging.DEBUG) -ELASTIC_HOST = ( - os.environ.get('ELASTIC_HOST', '').replace('https://', '') -) +ELASTIC_HOST = os.environ.get('ELASTIC_HOST', '').replace('https://', '') ELASTIC_USER = os.environ.get('ELASTIC_USER', '') ELASTIC_PASSWORD = os.environ.get('ELASTIC_PASSWORD', '') ELASTIC_PORT = os.environ.get('ELASTIC_PORT', 9200) ELASTIC_AUTH = f'{ELASTIC_USER}:{ELASTIC_PASSWORD}' if ELASTIC_USER else '' -ELASTIC_URL = os.environ.get( - 'ELASTIC_URL', f'https://{ELASTIC_AUTH}@{ELASTIC_HOST}:{ELASTIC_PORT}' -) +ELASTIC_URL = os.environ.get('ELASTIC_URL', f'https://{ELASTIC_AUTH}@{ELASTIC_HOST}:{ELASTIC_PORT}') REDIS_TTL = 86400 # 1 day in seconds @@ -114,9 +110,7 @@ class SearchService: if self.lock.acquire(blocking=False): try: logger.debug(f' Создаём новый индекс: {self.index_name} ') - self.client.indices.create( - index=self.index_name, body=index_settings - ) + self.client.indices.create(index=self.index_name, body=index_settings) self.client.indices.close(index=self.index_name) self.client.indices.open(index=self.index_name) finally: @@ -127,9 +121,7 @@ class SearchService: def put_mapping(self): if self.client: logger.debug(f' Разметка индекации {self.index_name}') - self.client.indices.put_mapping( - index=self.index_name, body=expected_mapping - ) + self.client.indices.put_mapping(index=self.index_name, body=expected_mapping) def check_index(self): if self.client: @@ -164,9 +156,7 @@ class SearchService: 'query': {'match': {'_all': text}}, } if self.client: - search_response = self.client.search( - index=self.index_name, body=search_body, size=limit, from_=offset - ) + search_response = self.client.search(index=self.index_name, body=search_body, size=limit, from_=offset) hits = search_response['hits']['hits'] results = [