From 1932aa324b95c2036c7c006d475f6d8899b58528 Mon Sep 17 00:00:00 2001 From: rimu <3310831+rimu@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:57:48 +1300 Subject: [PATCH] more efficient query than the one generated by sqlalchemy --- app/cli.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/cli.py b/app/cli.py index 53dd132a..6c0ad488 100644 --- a/app/cli.py +++ b/app/cli.py @@ -206,9 +206,12 @@ def register(app): # Ensure accurate community stats for community in Community.query.filter(Community.banned == False).all(): community.subscriptions_count = CommunityMember.query.filter(CommunityMember.community_id == community.id).count() - community.post_count = community.posts.filter(Post.deleted == False).count() - community.post_reply_count = community.replies.filter(PostReply.deleted == False).count() - db.session.commit() + community.post_count = db.session.execute(text('SELECT COUNT(id) as c FROM post WHERE deleted is false and community_id = :community_id'), + {'community_id': community.id}).scalar() + community.post_reply_count = db.session.execute(text('SELECT COUNT(id) as c FROM post_reply WHERE deleted is false and community_id = :community_id'), + {'community_id': community.id}).scalar() + + db.session.commit() # Delete voting data after 6 months db.session.execute(text('DELETE FROM "post_vote" WHERE created_at < :cutoff'), {'cutoff': utcnow() - timedelta(days=28 * 6)})