Files
Mog-Squire/backend/app/database.py
2025-07-07 13:39:46 +01:00

36 lines
1.1 KiB
Python

import os
from pathlib import Path
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker
from sqlalchemy.orm import declarative_base
from dotenv import load_dotenv
# Try loading ../db.conf into environment variables
PROJECT_ROOT = Path(__file__).resolve().parents[2]
DB_CONF = PROJECT_ROOT / "db.conf"
if DB_CONF.exists():
load_dotenv(DB_CONF)
else:
load_dotenv()
DB_HOST = os.getenv("PSQL_HOST", "localhost")
DB_PORT = os.getenv("PSQL_PORT", "5432")
DB_USER = os.getenv("PSQL_USER", "postgres")
DB_PASSWORD = os.getenv("PSQL_PASSWORD", "")
DB_NAME = os.getenv("PSQL_DBNAME", "ffxi_items")
DATABASE_URL = (
f"postgresql+asyncpg://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
)
engine = create_async_engine(DATABASE_URL, echo=False, pool_size=10, max_overflow=20)
AsyncSessionLocal: async_sessionmaker[AsyncSession] = async_sessionmaker(
bind=engine, expire_on_commit=False
)
Base = declarative_base()
async def get_session() -> AsyncSession:
async with AsyncSessionLocal() as session:
yield session