From a8ab7a93b08e73d254b64abf947bf2adcfb7b7c3 Mon Sep 17 00:00:00 2001 From: Edwin Eames Date: Thu, 29 Jan 2026 08:43:59 -0500 Subject: [PATCH] Updated claude big changes --- app/database.py | 8 +++++++- app/main.py | 25 +++++++++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/database.py b/app/database.py index d586acb..6672a0d 100644 --- a/app/database.py +++ b/app/database.py @@ -17,7 +17,13 @@ url = URL.create( port=ApplicationConfig.POSTGRES_PORT ) -engine = create_engine(url) +engine = create_engine( + url, + pool_pre_ping=True, # Verify connections before use + pool_size=5, # Maintain 5 connections in pool + max_overflow=10, # Allow 10 additional connections when busy + pool_recycle=3600, # Recycle connections after 1 hour +) Session = sessionmaker(autocommit=False, autoflush=False, bind=engine) session = Session() diff --git a/app/main.py b/app/main.py index 7ec6e18..a47cc9a 100644 --- a/app/main.py +++ b/app/main.py @@ -37,8 +37,9 @@ def setup_logging(): logger = setup_logging() +import uuid import requests -from fastapi import FastAPI, HTTPException, status +from fastapi import FastAPI, HTTPException, status, Request from fastapi.middleware.cors import CORSMiddleware from starlette.middleware.base import BaseHTTPMiddleware from starlette.responses import JSONResponse @@ -74,12 +75,24 @@ app = FastAPI( version="1.0.0", ) + +# Request ID middleware for request tracking/correlation +class RequestIDMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next): + request_id = request.headers.get("X-Request-ID") or str(uuid.uuid4())[:8] + request.state.request_id = request_id + response = await call_next(request) + response.headers["X-Request-ID"] = request_id + return response + +app.add_middleware(RequestIDMiddleware) + app.add_middleware( CORSMiddleware, allow_origins=settings.origins, allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], + allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"], + allow_headers=["Authorization", "Content-Type", "Accept", "Origin", "X-Requested-With", "X-Request-ID"], ) @app.get("/", tags=["General"]) @@ -226,7 +239,11 @@ async def startup_event(): logger.info("🤖🤖🤖🤖🤖 Mode: Development 🤖🤖🤖🤖🤖") elif mode in ['PRODUCTION', 'PROD']: logger.info("💀💀💀💀💀💀💀💀💀💀 ⚠️ WARNING PRODUCTION 💀💀💀💀💀💀💀💀💀💀") - logger.info(f"DB: {settings.SQLALCHEMY_DATABASE_URI[:30]}...") + # Sanitize DB URI to avoid logging credentials + db_uri = settings.SQLALCHEMY_DATABASE_URI + if '@' in db_uri: + db_uri = db_uri.split('@')[-1] + logger.info(f"DB: ...@{db_uri[:50]}") logger.info(f"CORS: {len(settings.origins)} origins configured") # Test database connection