Commit Graph

3 Commits

Author SHA1 Message Date
rob ab217e247f Allow omitting limit to return all candles in range
Change default limit from 100 to None. When limit is omitted,
EDM returns all candles in the requested range without truncation.

Also increased max limit from 1000 to 10000 for large requests.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 01:26:31 -04:00
rob d2cd47ea95 Add session-scoped connectors and request metrics tracking
- CacheManager.get_candles_with_source() supports per-request connector
  overrides and reports data source (memory/database/exchange)
- AsyncDatabaseCache now receives pool_size/max_overflow from config
- CacheManager.close() properly shuts down async DB connection pool
- /candles endpoint accepts optional session_id for authenticated access
- /candles records metrics on success and errors (latency, cache source)
- Added tests for connector override, source reporting, and metrics

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 14:02:56 -04:00
rob e501d61445 Implement M1, M2, M3 milestones - full exchange data manager
M1: Core Infrastructure
- Three-tier caching (memory → database → exchange)
- SQLite async database with connection pooling
- Memory cache with LRU eviction and TTL
- Gap detection and forward-fill gap filling
- Completeness validation for data requests

M2: Multi-Exchange Support
- Generic CCXT connector supporting all ccxt exchanges
- Session-based credential management
- WebSocket streaming with pub/sub subscriptions
- Rate limiting via CCXT's built-in limiter

M3: Production Ready
- Health checks (/health, /health/detailed) and metrics (/metrics)
- Connection pooling with WAL mode for SQLite
- Performance benchmarks (pytest-benchmark)
- BrighterTrading integration tests
- Docker deployment (Dockerfile, docker-compose.yml)
- Documentation (API reference, deployment, integration guide)

Includes 284 tests covering all components.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 04:05:30 -04:00