""" Database configuration and setup for Hirely application """ import os from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from dotenv import load_dotenv load_dotenv() # Database URL - defaults to SQLite for development, PostgreSQL for production DATABASE_URL = os.getenv( 'DATABASE_URL', 'sqlite:///./hirely.db' # Default to SQLite for easy development ) # Create SQLAlchemy engine engine = create_engine( DATABASE_URL, echo=True, # Set to False in production connect_args={"check_same_thread": False} if "sqlite" in DATABASE_URL else {} ) # Create SessionLocal class SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Create Base class for models Base = declarative_base() def get_db(): """ Dependency to get database session """ db = SessionLocal() try: yield db finally: db.close() def create_tables(): """ Create all tables in the database """ Base.metadata.create_all(bind=engine) def drop_tables(): """ Drop all tables in the database (use with caution!) """ Base.metadata.drop_all(bind=engine)