rating-fix
All checks were successful
Deploy on push / deploy (push) Successful in 23s

This commit is contained in:
Untone 2024-03-29 02:15:38 +03:00
parent a4dd56ee44
commit 9cc0c5b011

View File

@ -141,22 +141,33 @@ def add_rating_columns(q, group_list):
func.sum(case((AuthorRating.plus != true(), 1), else_=0)).label('dislikes_count'), func.sum(case((AuthorRating.plus != true(), 1), else_=0)).label('dislikes_count'),
) )
# by shouts # by shouts rating
shouts_subq = select(Reaction).where( shouts_rating_subq = (
and_( select(
Reaction.shout == Shout.id, Author.id,
Shout.authors.any(id=Author.id), func.coalesce(func.sum(
Reaction.reply_to.is_(None), case(
Reaction.deleted_at.is_(None) (Reaction.kind == ReactionKind.LIKE.value, 1),
(Reaction.kind == ReactionKind.DISLIKE.value, -1),
else_=0
)
)).label('shouts_rating')
) )
).subquery() .outerjoin(
Reaction,
q = q.outerjoin(shouts_subq, shouts_subq.c.shout == Shout.id) and_(
q = q.add_columns( Reaction.shout == Shout.id,
func.count(distinct(case((shouts_subq.c.kind == ReactionKind.LIKE.value, 1)))).label('shouts_likes'), Shout.authors.any(id=Author.id),
func.count(distinct(case((shouts_subq.c.kind == ReactionKind.DISLIKE.value, 1)))).label('shouts_dislikes'), Reaction.deleted_at.is_(None),
),
)
.group_by(Author.id)
.subquery()
) )
group_list.extend([shouts_subq.c.shouts_likes, shouts_subq.c.shouts_dislikes])
q = q.outerjoin(shouts_rating_subq, Author.id == shouts_rating_subq.c.id)
q = q.add_columns(shouts_rating_subq.c.shouts_rating)
group_list = [shouts_rating_subq.c.shouts_rating]
# by comments # by comments
replied_comment = aliased(Reaction) replied_comment = aliased(Reaction)