from fastapi import FastAPI, Depends from fastapi.middleware.cors import CORSMiddleware from sqlalchemy.orm import Session from app.api.v1.api import api_router from app.core.config import settings from app.api.deps import get_db from app.db.init_db import init_db app = FastAPI( title=settings.PROJECT_NAME, description="Music Streaming API", version="0.1.0", openapi_url="/openapi.json", docs_url="/docs", redoc_url="/redoc", ) # Set up CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(api_router, prefix=settings.API_V1_STR) # Health endpoint @app.get("/health", tags=["health"]) async def health_check(): return {"status": "healthy"} # Initialize database endpoint (normally would be in a separate command) @app.get("/init-db", tags=["admin"]) def initialize_db(db: Session = Depends(get_db)): init_db(db) return {"message": "Database initialized successfully"} if __name__ == "__main__": import uvicorn uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)