# backend/db/session.py from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy.pool import NullPool from dotenv import load_dotenv import os # Load environment variables load_dotenv() # Read .env settings USER = os.getenv("user") PASSWORD = os.getenv("password") HOST = os.getenv("host") PORT = os.getenv("port") DBNAME = os.getenv("dbname") # Supabase Transaction Pooler (IPv4-safe) URI DATABASE_URL = f"postgresql+psycopg2://{USER}:{PASSWORD}@{HOST}:{PORT}/{DBNAME}?sslmode=require" # SQLAlchemy engine with NullPool for Supabase engine = create_engine(DATABASE_URL, poolclass=NullPool) # Session factory (used for queries) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Base class for ORM models Base = declarative_base()