feat: Feature 1.2 (NBA stats FastAPI service) + Feature 1.4 (database schema)
Feature 1.2: Python FastAPI microservice wrapping nba_api - GET /stats/season-avg, /stats/last-n, /stats/splits, /players/search - Redis caching (24hr/1hr/6hr/7day), 0.6s rate limiting, PRA derived stat - 27 Python tests passing Feature 1.4: Complete Supabase database schema - 6 tables: users, picks, scan_sessions, bets, outcomes, performance - RLS enabled on all tables with auth.uid() policies - 3 triggers: auto-create user, updated_at, scan count reset - 37 schema validation tests passing - Migration SQL ready, pending manual apply (WSL2 DNS blocker) Total: 92 tests (65 Node.js + 27 Python), all passing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import json
|
||||
import redis as redis_lib
|
||||
from app.config import REDIS_URL
|
||||
|
||||
_client = None
|
||||
|
||||
|
||||
def get_redis():
|
||||
global _client
|
||||
if _client is None:
|
||||
_client = redis_lib.from_url(REDIS_URL, decode_responses=True)
|
||||
return _client
|
||||
|
||||
|
||||
def cache_get(key):
|
||||
r = get_redis()
|
||||
data = r.get(key)
|
||||
if data is not None:
|
||||
return json.loads(data)
|
||||
return None
|
||||
|
||||
|
||||
def cache_set(key, value, ttl):
|
||||
r = get_redis()
|
||||
r.set(key, json.dumps(value), ex=ttl)
|
||||
|
||||
|
||||
def cache_health():
|
||||
try:
|
||||
r = get_redis()
|
||||
r.ping()
|
||||
return True
|
||||
except Exception:
|
||||
return False
|
||||
Reference in New Issue
Block a user