diff --git a/resolvers/author.py b/resolvers/author.py index 22e44666..60705587 100644 --- a/resolvers/author.py +++ b/resolvers/author.py @@ -179,6 +179,12 @@ async def get_author(_, _info, slug="", author_id=None): ) .count() ) + rating_sum = ( + session.query(func.sum(AuthorRating.value)) + .filter(AuthorRating.author == author.id) + .scalar() + ) + author.stat["rating"] = rating_sum author.stat["commented"] = comments_count else: return {"error": "cant find author"} @@ -213,7 +219,7 @@ async def get_author_followed(_, _info, slug="", user=None, author_id=None) -> L author_id_query = select(Author.id).where(Author.slug == slug) elif user: author_id_query = select(Author.id).where(Author.user == user) - if not author_id: + if author_id_query is not None and not author_id: with local_session() as session: author_id = session.execute(author_id_query).scalar() diff --git a/resolvers/topic.py b/resolvers/topic.py index 4336df52..5cde215f 100644 --- a/resolvers/topic.py +++ b/resolvers/topic.py @@ -197,5 +197,7 @@ def get_random_topic(): q = q.order_by(func.random()).limit(1) with local_session() as session: - [topic] = session.execute(q).first() - return topic + r = session.execute(q).first() + if r: + [topic] = r + return topic