Skip to content

perf: push list endpoint — return summary projection, not full records #256

@coopernetes

Description

@coopernetes

Problem

GET /api/push returns full push records for every row in the page — including all PushStep content fields (diffs, scan output, blocked patterns). At 25 records this produces a ~3MB response, with 600ms–1.2s spent on content download alone in the browser.

The individual push detail page (GET /api/push/{id}) is already fast — the payload size problem is specific to the list view.

Proposed fix

Add a dedicated summary projection for the list endpoint. Each row only needs:

  • status — FORWARDED / APPROVED / REJECTED
  • url — full upstream repo URL (e.g. https://github.com/RBC/git-proxy-java.git)
  • refrefs/heads/... or refs/tags/...
  • commitSha
  • authorName / committerName
  • identityResolved — boolean (drives the green/yellow badge)
  • timestamp

All PushStep fields (including content, logs, errorMessage) should be omitted from the list response entirely. Full step detail remains available on GET /api/push/{id}.

Expected outcome

Push list response drops from ~3MB to a few KB, eliminating the content download bottleneck. List load time should come in well under 500ms total.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:uienhancementNew feature or requestperformancePerformance, latency, or resource usage

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions