
    i@
              
           d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZ  e j                  e      Zej"                  Zes ed       e	eddd	d
ddd      Z eee
dd      Zed        ZdefdZd Zy)    N)asynccontextmanager)declarative_base)MetaDatatext)create_async_engineAsyncSessionasync_sessionmaker)settingsz/Database URL not configured. Please set DB_URL.
      i  TF)	pool_sizemax_overflowpool_timeoutpool_recyclepool_pre_pingechofuture)bindclass_expire_on_commit	autoflushc                 $  K   t               } 	 |  	 | j                          d{    y# t        $ r7}| j                          d{  7   t        j	                  d|         d}~ww xY w7 H# | j                          d{  7   w xY ww)zm
    Async DB session (non-blocking)
    Usage:
        async with get_async_db() as db:
            ...
    Nz"DB session rollback due to error: )AsyncSessionLocal	Exceptionrollbackloggererrorclosesessiones     >/var/www/html/ls-ibe-bot-apis-staging/app/models/connection.pyget_async_dbr#   3   sz      ./G mmo     9!=>
 	gmmosX   B- BA0B	A-A(	A
A((A--A2 0B2BB	BBreturnc                  T  K   	 t               4 d{   } | j                  t        d             d{    ddd      d{    t        j	                  d       y7 L7 ,7 # 1 d{  7  sw Y   .xY w# t
        $ r"}t        j                  d|        Y d}~yd}~ww xY ww)z
    Verify DB connection
    NzSELECT 1u   ✅ Database connection OKTu    ❌ Database connection failed: F)r#   executer   r   infor   r   r   s     r"   check_database_connectionr(   I   s     >>W//$z"2333 ">01 "3 ">>>  7s;<s   B(A: AA: A%A!A%A: A#A: B(A: !A%#A: %A7+A.,A73A: :	B%B B( B%%B(c                     K   	 t         j                          d{    t        j                  d       y7 # t        $ r"} t        j                  d|         Y d} ~ yd} ~ ww xY ww)z9
    Close all DB connections (call on app shutdown)
    Nu    🧹 Database connections closedzError closing DB connections: )async_enginedisposer   r'   r   r   )r!   s    r"   cleanup_connectionsr,   Z   sU     ;""$$$67 	% ;5aS9::;s7   A&8 68 A&8 	A#AA&A##A&)logging
contextlibr   sqlalchemy.ormr   
sqlalchemyr   r   sqlalchemy.ext.asyncior   r   r	   app.configs.settingsr
   	getLogger__name__r   DB_URLDATABASE_URL
ValueErrorr*   r   r#   boolr(   r,        r"   <module>r;      s     * + %  *			8	$
 
F
GG
 #		 '		   * ";r:   