Skip to content

Commit 286e2b1

Browse files
committed
fix(OPS-2280): eagerly load award_vendor on tracker steps so vendor data serializes in API response
1 parent af905c1 commit 286e2b1

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

backend/ops_api/ops/services/procurement_trackers.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from sqlalchemy import Select, func, select
77
from sqlalchemy.orm import selectinload
88

9-
from models import ProcurementTracker
9+
from models import DefaultProcurementTrackerStep, ProcurementTracker
1010
from ops_api.ops.services.ops_service import ResourceNotFoundError
1111

1212

@@ -39,7 +39,9 @@ def get(self, id: int) -> ProcurementTracker:
3939
select(ProcurementTracker)
4040
.where(ProcurementTracker.id == id)
4141
.options(
42-
selectinload(ProcurementTracker.steps),
42+
selectinload(ProcurementTracker.steps.of_type(DefaultProcurementTrackerStep)).selectinload(
43+
DefaultProcurementTrackerStep.award_vendor
44+
),
4345
)
4446
)
4547
procurement_tracker = self.db_session.scalar(stmt)
@@ -87,9 +89,11 @@ def get_list(
8789
Returns:
8890
Tuple of (list of ProcurementTracker objects, metadata dict with count/limit/offset)
8991
"""
90-
# Build base query with eager loading
92+
# Build base query with eager loading (including award_vendor for AWARD steps)
9193
stmt = select(ProcurementTracker).options(
92-
selectinload(ProcurementTracker.steps),
94+
selectinload(ProcurementTracker.steps.of_type(DefaultProcurementTrackerStep)).selectinload(
95+
DefaultProcurementTrackerStep.award_vendor
96+
),
9397
)
9498

9599
# Extract pagination values

0 commit comments

Comments
 (0)