From 129c4bccf45a824d677a04ed57fd0421723f08ef Mon Sep 17 00:00:00 2001 From: Untone Date: Tue, 27 Feb 2024 17:03:21 +0300 Subject: [PATCH] get-followers-scalar-fix --- resolvers/author.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/resolvers/author.py b/resolvers/author.py index 7c601110..abce7afa 100644 --- a/resolvers/author.py +++ b/resolvers/author.py @@ -219,20 +219,21 @@ async def get_author_followers(_, _info, slug: str): try: with local_session() as session: author_alias = aliased(Author) - author_id = session.query(author_alias.id).filter(author_alias.slug == slug).first() - cached = await redis.execute('GET', f'id:{author_id}:followers') - results = [] - if not cached: - author_follower_alias = aliased(AuthorFollower, name='af') - q = select(Author).join( - author_follower_alias, - and_( - author_follower_alias.author == author_id, - author_follower_alias.follower == Author.id, - ), - ) - results = get_with_stat(q) - return json.loads(cached) if cached else results + author_id = session.query(author_alias.id).filter(author_alias.slug == slug).scalar() + if author_id: + cached = await redis.execute('GET', f'id:{author_id}:followers') + results = [] + if not cached: + author_follower_alias = aliased(AuthorFollower, name='af') + q = select(Author).join( + author_follower_alias, + and_( + author_follower_alias.author == author_id, + author_follower_alias.follower == Author.id, + ) + ) + results = get_with_stat(q) + return json.loads(cached) if cached else results except Exception as exc: import traceback logger.error(exc)