
    ;&i                     R   d 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
 ddlmZ ddlZddlZ ej                  e      Z e ej$                         dej&                  ej(                  ej*                  d	      Z eed
d
d
      Zde
eddf   fdZede
eddf   fd       ZeZd Zy)z4
Database session configuration for SQLAlchemy 2.0+
    )create_engine)sessionmakerscoped_sessionSession)settings)	Generator)contextmanagerNT)pool_pre_ping	pool_sizemax_overflowechofutureF)bind
autocommit	autoflushexpire_on_commitreturnc               #      K   t               } 	 |  	 | j                          y# t        $ r.}t        j                  d|        | j	                           d}~ww xY w# | j                          w xY ww)zg
    Dependency function that yields a database session.
    
    Yields:
        Database session
    zDatabase session error: N)SessionLocal	Exceptionloggererrorrollbackclosedbes     O/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/src/core/database.pyget_sessionr   !   sa      
B 	
  /s34

 	
s0   A3$ A3	A)AAA A00A3c               #   h  K   t        t              } 	 |  | j                          	 | j                          y# t        $ rX}t        j                  d|        t        j                  dt        j                                 | j                           d}~ww xY w# | j                          w xY ww)z
    Context manager for Celery tasks that need database access.
    
    Yields:
        Scoped database session for Celery tasks
    zCelery database session error: zTraceback: N)
r   r   commitr   r   r   	traceback
format_excr   remover   s     r   SessionCeleryr%   3   s      
	%B	
		 			  6qc:;{9#7#7#9":;<
	 			s2   B29 B2	BABBB B//B2c                      ddl } ddl} ddl} ddl} ddl} ddl} ddl} ddl} ddl} ddl	} ddl
} ddl} ddl} ddl} ddl} ddl} y)z
    Register SQLAlchemy models with metadata.
    This ensures all models are loaded and available for Alembic migrations.
    Tables should be created/managed through Alembic, not create_all().
    r   N)src.apps.auth.modelssrc.apps.base.modelssrc.apps.customers.modelssrc.apps.files.modelssrc.apps.invoices.modelssrc.apps.merchants.modelssrc.apps.notes.modelssrc.apps.payment_methods.models src.apps.payment_requests.modelssrc.apps.products.models"src.apps.product_categories.modelssrc.apps.receipts.models src.apps.role_permissions.modelssrc.apps.site_masters.modelssrc.apps.site_settings.modelssrc.apps.transactions.models)srcs    r   register_modelsr8   O   s4      $ #$ *+#-#+'('    )__doc__
sqlalchemyr   sqlalchemy.ormr   r   r   src.core.configr   typingr   
contextlibr	   r"   logging	getLogger__name__r   getDbConnectionUri	POOL_SIZEMAX_POOL_OVERFLOWSQL_ECHOenginer   r   r%   get_dbr8    r9   r   <module>rJ      s    % @ @ $  %  			8	$ 
H!  ++			
 		Ywd23 $ y$!45  * 
(r9   