Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from core.database import Base, engine,SessionLocal | |
| # Models (must be imported before create_all) | |
| from models.user import User | |
| from models.report import Report | |
| from models.search_stats import SearchStats | |
| from middleware.timing import timing_middleware | |
| from models.cache_stats import CacheStats | |
| # Routers | |
| from api.health import router as health_router | |
| from api.report import router as report_router | |
| from api.leaderboard import router as leaderboard_router | |
| from api.suggest import router as suggest_router | |
| from api.metrics import (router as metrics_router) | |
| from api.cache_stats import router as cache_stats_router | |
| from core.trie_store import trie | |
| from core.trie_store import handle_frequency | |
| from repositories.search_stats_repository import SearchStatsRepository | |
| from repositories.user_repository import UserRepository | |
| from fastapi.middleware.cors import CORSMiddleware | |
| # Create tables | |
| Base.metadata.create_all(bind=engine) | |
| print("Registered tables:", Base.metadata.tables.keys()) | |
| app = FastAPI( | |
| title="CFInsight", | |
| version="1.0.0" | |
| ) | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| def load_trie(): | |
| db = SessionLocal() | |
| try: | |
| stats = SearchStatsRepository.get_handle_frequencies(db) | |
| for handle,count in stats: | |
| trie.insert(handle) | |
| handle_frequency[handle] = count | |
| finally: | |
| db.close() | |
| # Include routers | |
| app.include_router(health_router) | |
| app.include_router(report_router) | |
| app.include_router(leaderboard_router) | |
| app.include_router(cache_stats_router) | |
| app.include_router(suggest_router) | |
| app.include_router(metrics_router) | |
| def root(): | |
| return { | |
| "message": "CFInsight API Running" | |
| } | |
| app.middleware("http")(timing_middleware) |