diff --git a/backend/routes/audit.py b/backend/routes/audit.py index d0570b1..83cf60d 100644 --- a/backend/routes/audit.py +++ b/backend/routes/audit.py @@ -124,20 +124,25 @@ async def get_random_job_outcomes( _current_user: User = Depends(require_permission(Permission.VIEW_AUDIT)), ) -> list[RandomNumberOutcomeResponse]: """Get all random number job outcomes, newest first.""" - query = select(RandomNumberOutcome).order_by(desc(RandomNumberOutcome.created_at)) + # Explicit join to avoid N+1 query + query = ( + select(RandomNumberOutcome, User.email) + .join(User, RandomNumberOutcome.triggered_by_user_id == User.id) + .order_by(desc(RandomNumberOutcome.created_at)) + ) result = await db.execute(query) - outcomes = result.scalars().all() + rows = result.all() return [ RandomNumberOutcomeResponse( id=outcome.id, job_id=outcome.job_id, triggered_by_user_id=outcome.triggered_by_user_id, - triggered_by_email=outcome.triggered_by.email, + triggered_by_email=email, value=outcome.value, duration_ms=outcome.duration_ms, status=outcome.status, created_at=outcome.created_at, ) - for outcome in outcomes + for outcome, email in rows ]