From c863dda81b11049b0466c67c7140e8d7e22e35e0 Mon Sep 17 00:00:00 2001 From: Untone Date: Sun, 25 Feb 2024 13:45:33 +0300 Subject: [PATCH] ratings-subquery-fix-2 --- resolvers/stat.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/resolvers/stat.py b/resolvers/stat.py index 2dcdc092..a2202f18 100644 --- a/resolvers/stat.py +++ b/resolvers/stat.py @@ -72,15 +72,25 @@ def add_author_ratings(q): ratings_subquery = ( select([ Author.id, - func.count().filter(and_( - Reaction.created_by == Author.id, - Reaction.kind == ReactionKind.COMMENT.value, - Reaction.deleted_at.is_(None), - )).label('comments_count'), - func.sum(case((AuthorRating.plus == true(), 1), else_=0)).label('likes_count'), - func.sum(case((AuthorRating.plus != true(), 1), else_=0)).label('dislikes_count'), - func.sum(case((and_(Reaction.kind == ReactionKind.LIKE.value, Shout.authors.any(id=Author.id)), 1), else_=0)).label('shouts_likes'), - func.sum(case((and_(Reaction.kind == ReactionKind.DISLIKE.value, Shout.authors.any(id=Author.id)), 1), else_=0)).label('shouts_dislikes') + func.count().filter( + and_( + Reaction.created_by == Author.id, + Reaction.kind == ReactionKind.COMMENT.value, + Reaction.deleted_at.is_(None), + ) + ).label('comments_count'), + func.sum( + case((AuthorRating.plus == true(), 1), else_=0) + ).label('likes_count'), + func.sum( + case((AuthorRating.plus != true(), 1), else_=0) + ).label('dislikes_count'), + func.sum( + case((and_(Reaction.kind == ReactionKind.LIKE.value, Shout.authors.any(id=Author.id)), 1), else_=0) + ).label('shouts_likes'), + func.sum( + case((and_(Reaction.kind == ReactionKind.DISLIKE.value, Shout.authors.any(id=Author.id)), 1), else_=0) + ).label('shouts_dislikes') ]) .select_from(Author) .join(AuthorRating, AuthorRating.author == Author.id)