package postgres import ( "context" "encoding/json" "time" ) type EventRow struct { EventID string `json:"event_id"` TS time.Time `json:"ts"` Type string `json:"type"` Payload json.RawMessage `json:"payload"` } func (d *DB) ListRecentEvents(ctx context.Context, limit int) ([]EventRow, error) { if limit <= 0 { limit = 100 } if limit > 1000 { limit = 1000 } rows, err := d.sql.QueryContext(ctx, ` select event_id, ts, type, payload from events order by ts desc limit $1 `, limit) if err != nil { return nil, err } defer rows.Close() var out []EventRow for rows.Next() { var r EventRow if err := rows.Scan(&r.EventID, &r.TS, &r.Type, &r.Payload); err != nil { return nil, err } out = append(out, r) } if err := rows.Err(); err != nil { return nil, err } return out, nil }