init
This commit is contained in:
50
backend/app/core/database.py
Normal file
50
backend/app/core/database.py
Normal file
@@ -0,0 +1,50 @@
|
||||
"""Database connection and session management"""
|
||||
from psycopg import AsyncConnection
|
||||
from psycopg_pool import AsyncConnectionPool
|
||||
from app.core.config import settings
|
||||
from typing import Optional
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Connection pool
|
||||
pool: Optional[AsyncConnectionPool] = None
|
||||
|
||||
|
||||
async def init_db():
|
||||
"""Initialize database connection pool"""
|
||||
global pool
|
||||
try:
|
||||
pool = AsyncConnectionPool(
|
||||
conninfo=settings.database_url,
|
||||
min_size=1,
|
||||
max_size=10,
|
||||
open=False,
|
||||
)
|
||||
await pool.open()
|
||||
logger.info("Database connection pool initialized")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to initialize database pool: {e}")
|
||||
raise
|
||||
|
||||
|
||||
async def close_db():
|
||||
"""Close database connection pool"""
|
||||
global pool
|
||||
if pool:
|
||||
await pool.close()
|
||||
logger.info("Database connection pool closed")
|
||||
|
||||
|
||||
async def get_db() -> AsyncConnection:
|
||||
"""Get database connection from pool"""
|
||||
if not pool:
|
||||
await init_db()
|
||||
return await pool.getconn()
|
||||
|
||||
|
||||
async def return_conn(conn: AsyncConnection):
|
||||
"""Return connection to pool"""
|
||||
if pool:
|
||||
await pool.putconn(conn)
|
||||
|
||||
Reference in New Issue
Block a user