import logging import uvicorn from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api.v1.api import api_router from app.core.config import settings from app.core.scheduler import scheduler from app.models import base # noqa # Configure logging logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", ) logger = logging.getLogger(__name__) app = FastAPI( title=settings.PROJECT_NAME, description="Solana Arbitrage Detector API", version="0.1.0", openapi_url="/openapi.json", docs_url="/docs", redoc_url="/redoc", ) # Configure CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include API router app.include_router(api_router, prefix=settings.API_V1_STR) # Health check endpoint @app.get("/health", tags=["health"]) async def health_check(): """Health check endpoint""" return {"status": "ok"} @app.on_event("startup") async def startup_event(): """ Startup event handler """ logger.info("Starting up application") # Start the scheduler scheduler.start() @app.on_event("shutdown") async def shutdown_event(): """ Shutdown event handler """ logger.info("Shutting down application") # Shut down the scheduler scheduler.shutdown() if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)