From 46e7de56952842b9fd27cdd1ff8d9cea95a4776f Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Mon, 2 Mar 2026 12:17:12 +0000 Subject: [PATCH] Fix MissingGreenlet 500 error on GET /api/campaigns Add selectinload(Campaign.agency) to get_with_proof_counts query so the agency relationship is eagerly loaded. Without it, accessing campaign.agency.name in the route triggered a lazy load in an async context, raising sqlalchemy.exc.MissingGreenlet and returning HTTP 500. Co-Authored-By: Claude Sonnet 4.6 --- backend/app/repositories/campaign_repository.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/app/repositories/campaign_repository.py b/backend/app/repositories/campaign_repository.py index 68a67ff..108e74d 100755 --- a/backend/app/repositories/campaign_repository.py +++ b/backend/app/repositories/campaign_repository.py @@ -114,6 +114,7 @@ class CampaignRepository: func.count(Proof.id).label("proof_count"), ) .outerjoin(Proof) + .options(selectinload(Campaign.agency)) .group_by(Campaign.id) ) if agency_id: