From efbea09495afc94c099d27711fb176de445d4e96 Mon Sep 17 00:00:00 2001 From: bniwredyc Date: Thu, 16 Feb 2023 11:30:35 +0100 Subject: [PATCH] fast random topics --- resolvers/zine/topics.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/resolvers/zine/topics.py b/resolvers/zine/topics.py index a0cfa3e7..1eebdd60 100644 --- a/resolvers/zine/topics.py +++ b/resolvers/zine/topics.py @@ -145,8 +145,14 @@ def topic_unfollow(user_id, slug): @query.field("topicsRandom") async def topics_random(_, info, amount=12): q = select(Topic) - q = add_topic_stat_columns(q) + q = q.join(ShoutTopic) + q = q.group_by(Topic.id) q = q.having(func.count(distinct(ShoutTopic.shout)) > 2) q = q.order_by(func.random()).limit(amount) - return get_topics_from_query(q) + topics = [] + with local_session() as session: + for [topic] in session.execute(q): + topics.append(topic) + + return topics