from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import MetaData
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()

from src.utils.settings import settings

# Initialize metadata object for tables
metadata = MetaData()

# Base class which all models will inherit from
Base = declarative_base(metadata=metadata)

# Database URL - This can be moved to your settings if you prefer
DATABASE_URL = settings.DATABASE_URL

# Create an engine to connect to the database
engine = create_engine(DATABASE_URL, echo=True)

# Session maker to handle database sessions
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

def get_db():
    """ Dependency to get a database session."""
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

Base.metadata.create_all(bind=engine)


#For cron purpose
def get_db_session():
    """Create a new session (not a FastAPI dependency)."""
    db = SessionLocal()
    return db


