Files
MOHPortalTest-AllAgents-All…/qwen/python/merchants_of_hope/main.py

78 lines
1.8 KiB
Python

"""
Main FastAPI application
"""
from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import HTTPBearer
from contextlib import asynccontextmanager
import logging
from .config.settings import settings
from .database import init_db, SessionLocal
from .api.v1.router import api_router
from .middleware.tenant import TenantMiddleware
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
"""Application lifespan events"""
# Startup
logger.info("Initializing database...")
init_db()
logger.info("Database initialized successfully")
yield
# Shutdown
logger.info("Application shutting down...")
# Create FastAPI app
app = FastAPI(
title=settings.APP_NAME,
version=settings.APP_VERSION,
description="MerchantsOfHope - Recruiting Platform for TSYS Group",
lifespan=lifespan
)
# Add middleware
app.add_middleware(
CORSMiddleware,
allow_origins=settings.ALLOWED_HOSTS,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Add tenant middleware for multi-tenancy
app.add_middleware(TenantMiddleware)
# Add authentication scheme
security = HTTPBearer()
# Include API routers
app.include_router(api_router, prefix="/api/v1")
@app.get("/")
async def root():
"""Root endpoint"""
return {
"message": f"Welcome to {settings.APP_NAME} v{settings.APP_VERSION}",
"tenant_support": settings.MULTI_TENANT_ENABLED
}
def get_db():
"""Database session dependency"""
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/health")
async def health_check():
"""Health check endpoint"""
return {"status": "healthy", "version": settings.APP_VERSION}