o
    wh.                     @   s   d Z ddlmZmZ ddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZmZ ddlmZ e Zeejdd	d
dddZeddedZdej dej dej dej Zeedd	d
dddZe	ededZdeeddf fddZdeedf fddZdS )zp
Database configuration and session management.
Handles both synchronous and asynchronous database connections.
    )	GeneratorAsyncGenerator)create_engine)AsyncSessioncreate_async_engineasync_sessionmaker)declarative_base)Sessionsessionmaker)settingsFTi  
      )echopool_pre_pingpool_recycle	pool_sizemax_overflow)
autocommit	autoflushbindzmysql+asyncmy://:@/)r   expire_on_commitclass_returnNc                  c   s(    t  } z
| V  W |   dS |   w )z4Dependency for getting synchronous database session.N)SessionLocalclose)db r   database.pyget_db4   s
   r!   c               	   C  sH   t  4 I dH } | V  W d  I dH  dS 1 I dH sw   Y  dS )z5Dependency for getting asynchronous database session.N)AsyncSessionLocal)sessionr   r   r    get_async_db=   s   .r$   )__doc__typingr   r   
sqlalchemyr   sqlalchemy.ext.asyncior   r   r   sqlalchemy.ext.declarativer   sqlalchemy.ormr	   r
   configr   BaseDATABASE_URLenginer   DB_USERDB_PASSWORDDB_HOSTDB_NAMEasync_db_urlasync_enginer"   r!   r$   r   r   r   r    <module>   sJ    	$		