import os

from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, sessionmaker

DATA_DIR = os.environ.get(
    "VEEDON_DATA_DIR",
    os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "data")),
)
os.makedirs(DATA_DIR, exist_ok=True)
os.makedirs(os.path.join(DATA_DIR, "snapshots"), exist_ok=True)
os.makedirs(os.path.join(DATA_DIR, "models"), exist_ok=True)

# ponytail: SQLite للتطوير — الإنتاج يمرر DATABASE_URL لـ PostgreSQL بلا تغيير كود
DATABASE_URL = os.environ.get(
    "DATABASE_URL", "sqlite:///" + os.path.join(DATA_DIR, "veedon.db")
)

engine = create_engine(
    DATABASE_URL,
    connect_args={"check_same_thread": False} if DATABASE_URL.startswith("sqlite") else {},
)
SessionLocal = sessionmaker(bind=engine, autoflush=False, expire_on_commit=False)


class Base(DeclarativeBase):
    pass


def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()
