reactions-distinct
All checks were successful
Deploy on push / deploy (push) Successful in 26s

This commit is contained in:
Untone 2024-02-26 18:16:52 +03:00
parent 172b3af6df
commit 248620622a

View File

@ -359,6 +359,7 @@ async def load_reactions_by(_, info, by, limit=50, offset=0):
select(Reaction, Author, Shout) select(Reaction, Author, Shout)
.join(Author, Reaction.created_by == Author.id) .join(Author, Reaction.created_by == Author.id)
.join(Shout, Reaction.shout == Shout.id) .join(Shout, Reaction.shout == Shout.id)
.distinct() # Применяем DISTINCT здесь
) )
# calculate counters # calculate counters
@ -373,14 +374,12 @@ async def load_reactions_by(_, info, by, limit=50, offset=0):
q = q.group_by(Reaction.id, Author.id, Shout.id, aliased_reaction.id) q = q.group_by(Reaction.id, Author.id, Shout.id, aliased_reaction.id)
# order by # order by
# q = q.distinct() # FIXME
# ERROR: psycopg2.errors.UndefinedFunction) could not identify an equality operator for type json
q = q.order_by(desc(Reaction.created_at)) q = q.order_by(desc(Reaction.created_at))
# pagination # pagination
q = q.limit(limit).offset(offset) q = q.limit(limit).offset(offset)
reactions = set() reactions = []
with local_session() as session: with local_session() as session:
result_rows = session.execute(q) result_rows = session.execute(q)
for [ for [
@ -400,7 +399,7 @@ async def load_reactions_by(_, info, by, limit=50, offset=0):
'reacted': reacted_stat, 'reacted': reacted_stat,
'commented': commented_stat, 'commented': commented_stat,
} }
reactions.add(reaction) reactions.append(reaction) # Используем список для хранения реакций
# sort if by stat is present # sort if by stat is present
stat_sort = by.get('stat') stat_sort = by.get('stat')