
    b6i)                         d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	  e	e
      Z e       Zd Z e       Zd
dZdeeddf   fd	Zy)    )SQLModelcreate_engineSession)	Generator)get_settings)setup_loggerc                  ~   t         j                  d       ddi} t        j                  j	                  d      rt         j                  d       ddi| d<   	 t        t        j                  fi | }t         j                  d       |S # t        $ r,}t         j                  d	t        j                           d
}~ww xY w)zICreate DB engine with proper handling for SQLite vs production databases.zInitializing database engine...echoFsqlitez=Detected SQLite database; applying 'check_same_thread=False'.check_same_threadconnect_argsz%Database engine created successfully.z*Failed to create engine for database URL: N)	loggerinfosettingsDATABASE_URL
startswithdebugr   	Exception	exception)kwargsenginees      @/var/www/html/story-book/Story-Book-python-api/app/db/session.py
get_enginer      s    
KK12F ''1TU"5u!=~x44??;< EhF[F[E\]^s   0B 	B<'B77B<returnNc                      t         j                  d       	 t        j                  j	                  t
               t         j                  d       y# t        $ r} t         j                  d        d} ~ ww xY w)z=Creates all tables (safe for local dev; in prod use Alembic).zCreating database tables...zTables created.zError creating database tables.N)r   r   r   metadata
create_allr   r   r   )r   s    r   init_dbr      sW    
KK-.$$V,%& :;s   8A 	A4A//A4c               #      K   	 t        t              5 } |  ddd       y# 1 sw Y   yxY w# t        $ r}t        j	                  d        d}~ww xY ww)z4FastAPI dependency that provides a SQLModel session.Nz&Database session encountered an error.)r   r   r   r   r   )sessionr   s     r   get_sessionr"   (   sC     V_M __ ABs=   A- !- A*- A- 	AAAA)r   N)sqlmodelr   r   r   typingr   app.core.configr   app.core.loggingr   __name__r   r   r   r   r   r"        r   <module>r*      sP    5 5  ( )	h	>" 
Ywd23 r)   