from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
import os

# Get absolute path for the backend directory
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

# Use DATA_DIR from environment if running in Docker, otherwise fallback to local 'data' folder
DATA_DIR = os.environ.get("DATA_DIR", os.path.join(BASE_DIR, "data"))

# Create data directory if it doesn't exist
os.makedirs(DATA_DIR, exist_ok=True)

# Handle absolute path for SQLite (needs 4 slashes on Unix)
db_path = os.path.join(DATA_DIR, "inventory.db")
SQLALCHEMY_DATABASE_URL = f"sqlite:////{db_path}"

# connect_args={"check_same_thread": False} is required for SQLite in FastAPI/Starlette
engine = create_engine(
    SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()

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