feat(api): add paginated events feed JSON endpoint (#25)

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: Matt Johnson <mj@k7zvx.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
malice 2026-05-17 22:31:00 -06:00 committed by GitHub
commit 246cd75051
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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);