Spaces:
Running
Running
| from sqlalchemy import create_engine | |
| from sqlalchemy.orm import sessionmaker, declarative_base | |
| from app.core.config import settings | |
| if settings.DATABASE_URL.startswith("sqlite"): | |
| engine = create_engine( | |
| settings.DATABASE_URL, | |
| connect_args={"check_same_thread": False} | |
| ) | |
| else: | |
| db_url = settings.DATABASE_URL | |
| # Normalize PaaS postgres:// or postgresql:// URLs to explicitly use the psycopg2 driver | |
| if db_url.startswith("postgres://"): | |
| db_url = db_url.replace("postgres://", "postgresql+psycopg2://", 1) | |
| elif db_url.startswith("postgresql://"): | |
| db_url = db_url.replace("postgresql://", "postgresql+psycopg2://", 1) | |
| elif db_url.startswith("postgresql+psycopg://"): | |
| db_url = db_url.replace("postgresql+psycopg://", "postgresql+psycopg2://", 1) | |
| engine = create_engine( | |
| db_url, | |
| pool_pre_ping=True, | |
| pool_recycle=300, | |
| pool_size=10, | |
| max_overflow=20 | |
| ) | |
| SessionLocal = sessionmaker( | |
| autocommit=False, | |
| autoflush=False, | |
| bind=engine | |
| ) | |
| Base = declarative_base() |