""" config_db.py 데이터베이스 연결 설정 (MariaDB + aiomysql) 비동기 연결 풀 생성 및 관리. """ from typing import Optional import aiomysql from .config_system import ( DB_HOST, DB_NAME, DB_PASSWORD, DB_POOL_MAX, DB_POOL_MIN, DB_PORT, DB_USER, ) # 글로벌 DB 풀 (앱 시작/종료 시 관리) db_pool: Optional[aiomysql.Pool] = None async def init_db_pool() -> aiomysql.Pool: """MariaDB 연결 풀 초기화""" global db_pool db_pool = await aiomysql.create_pool( host=DB_HOST, port=DB_PORT, db=DB_NAME, user=DB_USER, password=DB_PASSWORD, minsize=DB_POOL_MIN, maxsize=DB_POOL_MAX, autocommit=False, charset="utf8mb4", ) return db_pool async def close_db_pool() -> None: """MariaDB 연결 풀 종료""" global db_pool if db_pool: db_pool.close() await db_pool.wait_closed() db_pool = None def get_db_pool() -> aiomysql.Pool: """현재 활성 DB 풀 반환. 없으면 RuntimeError""" if not db_pool: raise RuntimeError("DB pool not initialized. Call init_db_pool() first.") return db_pool