|
6 | 6 | from sqlalchemy import Select, func, select |
7 | 7 | from sqlalchemy.orm import selectinload |
8 | 8 |
|
9 | | -from models import ProcurementTracker |
| 9 | +from models import DefaultProcurementTrackerStep, ProcurementTracker |
10 | 10 | from ops_api.ops.services.ops_service import ResourceNotFoundError |
11 | 11 |
|
12 | 12 |
|
@@ -39,7 +39,9 @@ def get(self, id: int) -> ProcurementTracker: |
39 | 39 | select(ProcurementTracker) |
40 | 40 | .where(ProcurementTracker.id == id) |
41 | 41 | .options( |
42 | | - selectinload(ProcurementTracker.steps), |
| 42 | + selectinload(ProcurementTracker.steps.of_type(DefaultProcurementTrackerStep)).selectinload( |
| 43 | + DefaultProcurementTrackerStep.award_vendor |
| 44 | + ), |
43 | 45 | ) |
44 | 46 | ) |
45 | 47 | procurement_tracker = self.db_session.scalar(stmt) |
@@ -87,9 +89,11 @@ def get_list( |
87 | 89 | Returns: |
88 | 90 | Tuple of (list of ProcurementTracker objects, metadata dict with count/limit/offset) |
89 | 91 | """ |
90 | | - # Build base query with eager loading |
| 92 | + # Build base query with eager loading (including award_vendor for AWARD steps) |
91 | 93 | stmt = select(ProcurementTracker).options( |
92 | | - selectinload(ProcurementTracker.steps), |
| 94 | + selectinload(ProcurementTracker.steps.of_type(DefaultProcurementTrackerStep)).selectinload( |
| 95 | + DefaultProcurementTrackerStep.award_vendor |
| 96 | + ), |
93 | 97 | ) |
94 | 98 |
|
95 | 99 | # Extract pagination values |
|
0 commit comments