
    j
                        d Z 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
 ddlmZ  eej                  ej                  dej                  ej                   e	      Z e
eed
d
d
      Zdeedf   fdZ	 	 	 	 	 	 ddededededededefdZy)z(
Database configuration for TripTalley.
    N)AsyncGenerator)AsyncAdaptedQueuePool)create_async_engineAsyncSession)sessionmaker)settingsT)echopool_pre_ping	pool_sizemax_overflow	poolclassF)class_expire_on_commit
autocommit	autoflushreturnc                    K   t               4 d{   } 	 |  | j                          d{    ddd      d{    y7 37 # | j                          d{  7   w xY w7 '# 1 d{  7  sw Y   yxY ww)z
    Dependency for getting database sessions.
    
    Usage:
        @router.get("/items")
        async def read_items(db: AsyncSession = Depends(get_db)):
            ...
    N)async_sessionclose)sessions    //srv/projects/triptalley/backend/app/core/db.pyget_dbr   "   sl       " "'	"M--/!!	" " " "'--/!!	" " " "st   A>AA>A)A	A)AA)A>A' A>A)	A$A 
A$$A)'A>)A;/A20A;7A>driverusernamepasswordhostportdatabasec                     | dk(  rd|  d| S | dk(  r9d|  d}|r||z  }|r|d| z  }|s|r|dz  }||z  }|r|d| z  }|d	| z  }|S t        d
|        )z
    Build a database URL from components.
    
    For SQLite (async):
        aiosqlite:///./triptalley.db
    
    For PostgreSQL (async):
        postgresql+asyncpg://user:pass@localhost:5432/dbname
    	aiosqlitezsqlite+z:///./zpostgresql+asyncpgzpostgresql+z://:@/zUnsupported driver: )
ValueError)r   r   r   r   r   r   urls          r   build_database_urlr&   3   s    " xj11%%F83'8OCQxj>!Cx3JCtQtf:C8*~

+F84
55    )r    NN	localhostNztriptalley.db)__doc__ostypingr   
sqlalchemyr   sqlalchemy.ext.asyncior   r   sqlalchemy.ormr   app.core.configr   DATABASE_URLDEBUGDATABASE_POOL_SIZEDATABASE_MAX_OVERFLOWenginer   r   strintr&    r'   r   <module>r8      s    
 ! , D ' $ 
	))//#
 
"n\4%78 "$ #"6"6"6 "6 	"6
 "6 "6 	"6r'   