Skip to content

Commit 18ea5ca

Browse files
committed
feat(app): implement database lifecycle management
- Initialize database connection on application startup - Perform health check after initialization - Log database dialect and health status - Gracefully close database connection on shutdown - Handle initialization errors without blocking startup Closes acceptance criteria: Database connections can be established
1 parent 8883afa commit 18ea5ca

1 file changed

Lines changed: 19 additions & 4 deletions

File tree

app/main.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from app.logging_config import configure_logging, get_logger
1515
from app.middleware import setup_middleware
1616
from app.routes import router
17+
from db.connection import get_database, close_database
1718

1819
# Initialize settings
1920
settings = get_settings()
@@ -46,11 +47,22 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
4647
)
4748

4849
# Initialize database connection
49-
# TODO: Initialize database manager
5050
logger.info("database_initializing")
51+
try:
52+
db_manager = await get_database()
53+
is_healthy = await db_manager.health_check()
54+
logger.info(
55+
"database_initialized",
56+
dialect=db_manager.dialect,
57+
healthy=is_healthy,
58+
)
59+
except Exception as e:
60+
logger.error("database_initialization_failed", error=str(e))
61+
# Continue startup even if database fails - allows health checks to report status
62+
pass
5163

5264
# Load model
53-
# TODO: Initialize model loader
65+
# TODO: Initialize model loader (Phase 1.3)
5466
logger.info(
5567
"model_loading",
5668
model_name=settings.huggingface.model_name,
@@ -65,8 +77,11 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
6577
logger.info("application_shutting_down")
6678

6779
# Cleanup resources
68-
# TODO: Close database connections
69-
# TODO: Unload model
80+
logger.info("database_closing")
81+
await close_database()
82+
logger.info("database_closed")
83+
84+
# TODO: Unload model (Phase 1.3)
7085

7186
logger.info("application_stopped")
7287

0 commit comments

Comments
 (0)