the beginning of the idiots
This commit is contained in:
		
							
								
								
									
										78
									
								
								qwen/python/merchants_of_hope/main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								qwen/python/merchants_of_hope/main.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
"""
 | 
			
		||||
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}
 | 
			
		||||
		Reference in New Issue
	
	Block a user