From 4cb70d951a1ba83d06a9e3f634ab49ea70cbe753 Mon Sep 17 00:00:00 2001 From: Untone Date: Tue, 23 Jan 2024 01:51:38 +0300 Subject: [PATCH] rating-sum-fix --- resolvers/reader.py | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/resolvers/reader.py b/resolvers/reader.py index 65c5670c..b00a9e06 100644 --- a/resolvers/reader.py +++ b/resolvers/reader.py @@ -21,7 +21,15 @@ def add_stat_columns(q): q = q.outerjoin(aliased_reaction).add_columns( func.sum(aliased_reaction.id).label("reacted_stat"), func.sum(case((aliased_reaction.kind == ReactionKind.COMMENT.value, 1), else_=0)).label("commented_stat"), - get_rating_func(aliased_reaction).label("rating_stat"), + func.sum( + case( + (aliased_reaction.kind == ReactionKind.AGREE.value, 1), + (aliased_reaction.kind == ReactionKind.DISAGREE.value, -1), + (aliased_reaction.kind == ReactionKind.LIKE.value, 1), + (aliased_reaction.kind == ReactionKind.DISLIKE.value, -1), + else_=0, + ) + ).label("rating_stat"), func.max( case( (aliased_reaction.kind != ReactionKind.COMMENT.value, None), @@ -376,23 +384,6 @@ def get_shouts_from_query(q, author_id=None): return shouts - -def get_rating_func(aliased_reaction): - return func.sum( - case( - (aliased_reaction.kind == str(ReactionKind.AGREE.value), 1), - (aliased_reaction.kind == str(ReactionKind.DISAGREE.value), -1), - (aliased_reaction.kind == str(ReactionKind.PROOF.value), 1), - (aliased_reaction.kind == str(ReactionKind.DISPROOF.value), -1), - (aliased_reaction.kind == str(ReactionKind.ACCEPT.value), 1), - (aliased_reaction.kind == str(ReactionKind.REJECT.value), -1), - (aliased_reaction.kind == str(ReactionKind.DISLIKE.value), -1), - (aliased_reaction.reply_to.is_not(None), 0), - else_=0, - ) - ) - - @query.field("load_shouts_random_top") async def load_shouts_random_top(_, _info, options): """