| 459 | } |
| 460 | |
| 461 | func scanUsageEventsForUser(ctx context.Context, tx pgx.Tx, userID string) ([]UsageEventEntry, error) { |
| 462 | rows, err := tx.Query(ctx, |
| 463 | `SELECT id, agent_id, domain, direction, event_type, created_at |
| 464 | FROM usage_events WHERE user_id = $1 ORDER BY created_at`, userID) |
| 465 | if err != nil { |
| 466 | return nil, err |
| 467 | } |
| 468 | defer rows.Close() |
| 469 | var out []UsageEventEntry |
| 470 | for rows.Next() { |
| 471 | var e UsageEventEntry |
| 472 | if err := rows.Scan(&e.ID, &e.AgentID, &e.Domain, &e.Direction, &e.EventType, &e.CreatedAt); err != nil { |
| 473 | return nil, err |
| 474 | } |
| 475 | out = append(out, e) |
| 476 | } |
| 477 | return out, rows.Err() |
| 478 | } |