"""
Database connection module for enterprise storage.

This is for backwards compatibility with V0.

This module provides database engines and session makers by delegating to the
centralized DbSessionInjector from app_server/config.py. This ensures a single
source of truth for database connection configuration.
"""

import contextlib


def _get_db_session_injector():
    from openhands.app_server.config import get_global_config

    _config = get_global_config()
    return _config.db_session


def session_maker(**kwargs):
    db_session_injector = _get_db_session_injector()
    factory = db_session_injector.get_session_maker()
    return factory(**kwargs)


@contextlib.asynccontextmanager
async def a_session_maker(**kwargs):
    db_session_injector = _get_db_session_injector()
    factory = await db_session_injector.get_async_session_maker()
    async with factory(**kwargs) as session:
        yield session


def get_engine():
    db_session_injector = _get_db_session_injector()
    engine = db_session_injector.get_db_engine()
    return engine
