from fastapi import FastAPI, HTTPException, Security, status from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.trustedhost import TrustedHostMiddleware from fastapi.security import OAuth2PasswordBearer from fastapi.security.api_key import APIKeyHeader from contextlib import asynccontextmanager from server.routes.mail import router as mailRouter from server.utils.database import Base, SessionLocal, engine @asynccontextmanager async def lifespan(app: FastAPI): # Startup logic Base.metadata.create_all(engine) yield # Shutdown logic db = SessionLocal() await db.close() app = FastAPI( title="Hiago Docs", description="This is the documentation for Hiago's API.", version="1.0", basePath="/v1", lifespan=lifespan, ) app.add_middleware( TrustedHostMiddleware, allowed_hosts=["*"], ) origins = ["*"] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["GET", "POST", "PUT", "DELETE"], allow_headers=["*"], ) @app.get("/") def home(): return {"Hiago server is running"} app.include_router( mailRouter, tags=["mail"], prefix="/v1", )