"""
HK Racing Analytics - Main FastAPI Application
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from loguru import logger
import sys

# Configure logging
logger.remove()
logger.add(
    sys.stdout,
    format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan> - <level>{message}</level>",
    level="INFO"
)

# Create FastAPI app
app = FastAPI(
    title="HK Racing Analytics",
    description="Hong Kong Horse Racing Analytics and Prediction API",
    version="1.0.0",
    docs_url="/docs",
    redoc_url="/redoc"
)

# CORS middleware
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


@app.on_event("startup")
async def startup_event():
    """Initialize on startup"""
    logger.info("🚀 HK Racing Analytics API starting up...")
    
    # Initialize database
    from app.db.database import init_db
    init_db()
    
    logger.info("✅ Startup complete")


@app.on_event("shutdown")
async def shutdown_event():
    """Cleanup on shutdown"""
    logger.info("👋 Shutting down HK Racing Analytics API...")


@app.get("/")
async def root():
    """Root endpoint"""
    return {
        "app": "HK Racing Analytics",
        "version": "1.0.0",
        "status": "operational",
        "docs": "/docs"
    }


@app.get("/health")
async def health_check():
    """Health check endpoint"""
    return {
        "status": "healthy",
        "service": "hk-racing-analytics"
    }


# Import routers
from app.api import races, predictions

# Include routers
app.include_router(races.router, prefix="/api/races", tags=["races"])
app.include_router(predictions.router, prefix="/api/predictions", tags=["predictions"])


if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
