Updated db handling
This commit is contained in:
@@ -42,7 +42,7 @@ from .config_loader import load_config
|
||||
from .const import CONF_GOOGLE_ACCOUNT, CONF_HOTEL_ID, CONF_META_ACCOUNT, HttpStatusCode
|
||||
from .conversion_service import ConversionService
|
||||
from .customer_service import CustomerService
|
||||
from .db import Base, create_database_engine
|
||||
from .db import Base, ResilientAsyncSession, create_database_engine
|
||||
from .db import Customer as DBCustomer
|
||||
from .db import Reservation as DBReservation
|
||||
from .email_monitoring import ReservationStatsCollector
|
||||
@@ -291,8 +291,12 @@ async def lifespan(app: FastAPI):
|
||||
engine = create_database_engine(config=config, echo=False)
|
||||
AsyncSessionLocal = async_sessionmaker(engine, expire_on_commit=False)
|
||||
|
||||
# Create resilient session wrapper for automatic connection recovery
|
||||
resilient_session = ResilientAsyncSession(AsyncSessionLocal, engine)
|
||||
|
||||
app.state.engine = engine
|
||||
app.state.async_sessionmaker = AsyncSessionLocal
|
||||
app.state.resilient_session = resilient_session
|
||||
app.state.config = config
|
||||
app.state.alpine_bits_server = AlpineBitsServer(config)
|
||||
app.state.event_dispatcher = event_dispatcher
|
||||
@@ -394,11 +398,25 @@ async def lifespan(app: FastAPI):
|
||||
|
||||
|
||||
async def get_async_session(request: Request):
|
||||
"""Get a database session with automatic connection recovery.
|
||||
|
||||
This dependency provides an async session that will automatically
|
||||
retry on connection errors, disposing the pool and reconnecting.
|
||||
"""
|
||||
async_sessionmaker = request.app.state.async_sessionmaker
|
||||
async with async_sessionmaker() as session:
|
||||
yield session
|
||||
|
||||
|
||||
def get_resilient_session(request: Request) -> ResilientAsyncSession:
|
||||
"""Get the resilient session manager from app state.
|
||||
|
||||
This provides access to the ResilientAsyncSession for use in handlers
|
||||
that need retry capability on connection errors.
|
||||
"""
|
||||
return request.app.state.resilient_session
|
||||
|
||||
|
||||
app = FastAPI(
|
||||
title="Wix Form Handler API",
|
||||
description="Secure API endpoint to receive and process Wix form submissions with authentication and rate limiting",
|
||||
|
||||
Reference in New Issue
Block a user