Added a "Published in the last X days" filter, applied by the backend

GET /api/opportunities takes released_from, an RFC 3339 time, and lists
only the opportunities whose latest release is at or after it. It works
with paging and with changed_after, which keeps the same batch either
way; an invalid value is 400.

The frontend's filter defaults to 7 days, from midnight UK time, and
sends it with every load and catch-up, so a year of opportunities isn't
downloaded to show a week's. Changing the days loads the list again;
Clear filters goes back to 7.
This commit is contained in:
bwilliams committed 2026-10-19 10:05:45 +01:00
1 parent b8244da2e5
commit 746fa0a9c1
19 files changed
+333 -64

No files matched your search

+2 -2
View File
@@ -46,7 +46,7 @@ func TestChangeBatchAfterClockWentBack(t *testing.T) {
t.Errorf("batch created at %v, not after %v", latest.CreatedAt, future)
}
got, hash, err := s.ListChangedOpportunities(ctx, "future")
got, hash, err := s.ListChangedOpportunities(ctx, "future", time.Time{})
if err != nil {
t.Fatal(err)
}
@@ -101,7 +101,7 @@ func TestChangeBatchRetention(t *testing.T) {
&records,
`SELECT COUNT(*) FROM opportunity_change_batch_opportunities`,
)
_, _, err = s.ListChangedOpportunities(ctx, old)
_, _, err = s.ListChangedOpportunities(ctx, old, time.Time{})
if retention > 0 {
if batches != 1 || records != 1 ||