veza/veza-backend-api/internal/websocket/chat
senke 1ed7fe2ebb feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search
- Rewrite chat rate limiter with Redis sliding window (sorted sets) and
  automatic in-memory fallback when Redis is unavailable
- Add ChatPresenceService with Redis-backed online/offline/heartbeat
  tracking (2min TTL), integrated into Hub register/unregister
- Add migration 113: tsvector column with GIN index and auto-update
  trigger on messages table for full-text search
- Update Search repository method to use ts_rank ordering instead of ILIKE
- Wire Redis client into chat WebSocket setup in router.go
- Add comprehensive tests: rate limiter, presence, 100-user concurrent benchmark
2026-02-22 21:17:51 +01:00
..
benchmark_test.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00
client.go feat(chat): Sprint 2 -- WebSocket hub, client, message types, route 2026-02-22 20:41:39 +01:00
handler.go feat(chat): Sprint 3 -- message handlers, real-time features, permissions 2026-02-22 20:43:44 +01:00
handler_calls.go feat(chat): Sprint 3 -- message handlers, real-time features, permissions 2026-02-22 20:43:44 +01:00
handler_history.go feat(chat): Sprint 3 -- message handlers, real-time features, permissions 2026-02-22 20:43:44 +01:00
handler_messages.go feat(chat): Sprint 3 -- message handlers, real-time features, permissions 2026-02-22 20:43:44 +01:00
handler_messages_test.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00
handler_realtime.go feat(chat): Sprint 3 -- message handlers, real-time features, permissions 2026-02-22 20:43:44 +01:00
handler_realtime_test.go test(chat): Sprint 5 -- unit tests, E2E tests, feature parity validation 2026-02-22 20:49:32 +01:00
handler_rooms.go feat(chat): Sprint 3 -- message handlers, real-time features, permissions 2026-02-22 20:43:44 +01:00
hub.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00
hub_test.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00
messages.go feat(chat): Sprint 2 -- WebSocket hub, client, message types, route 2026-02-22 20:41:39 +01:00
permissions.go feat(chat): Sprint 3 -- message handlers, real-time features, permissions 2026-02-22 20:43:44 +01:00
presence_service.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00
presence_service_test.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00
rate_limiter.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00
rate_limiter_test.go feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search 2026-02-22 21:17:51 +01:00