import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from src.api.chat import router as chat_router
from src.api.admin import router as admin_router
from src.core.config import settings

from contextlib import asynccontextmanager

def create_app() -> FastAPI:
    @asynccontextmanager
    async def lifespan(app: FastAPI):
        print(" Server starting... Ready for requests.")
        yield
        print(" Server shutting down.")

    app = FastAPI(
        title=settings.APP_NAME,
        description="Professional RERA AI Assistant API with MongoDB Atlas",
        version="2.0.0",
        lifespan=lifespan
    )

    # CORS configuration
    app.add_middleware(
        CORSMiddleware,
        allow_origins=["*"],
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )

    app.include_router(chat_router)
    app.include_router(admin_router)

    return app

app = create_app()

if __name__ == "__main__":
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
