feat(api): add paginated events feed JSON endpoint

GET /events.json with cursor-based pagination and filtering:
- Filter by adapter, category, since/until, region bbox
- Cursor pagination via (time DESC, id DESC) ordering
- Returns events with GeoJSON geometry parsed as objects
- Validation returns 400 with clear error messages

Migration 014 adds composite index for efficient pagination.

Tests: 17 new tests covering filters, pagination, validation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Matt Johnson 2026-05-18 04:21:18 +00:00
commit 9f3794f4ff
3 changed files with 771 additions and 0 deletions

View file

@ -0,0 +1,5 @@
-- Migration 014: Add composite index for cursor-based pagination
-- Supports ORDER BY (time DESC, id DESC) with efficient range queries
CREATE INDEX IF NOT EXISTS events_time_id_desc_idx
ON public.events (time DESC, id DESC);