diff --git a/src/config.py b/src/config.py index 120354e..98f782a 100644 --- a/src/config.py +++ b/src/config.py @@ -48,6 +48,9 @@ _QUOTED_DATABASE_PASSWORD = parse.quote_plus(str(_DATABASE_CREDENTIAL_PASSWORD)) SQLALCHEMY_DATABASE_URI = SecretStr(f"postgresql+psycopg://{_DATABASE_CREDENTIAL_USER}:{_QUOTED_DATABASE_PASSWORD}@{DATABASE_HOSTNAME}:{DATABASE_PORT}/{DATABASE_NAME}") +if settings.ENVIRONMENT == Environment.TESTING: + SQLALCHEMY_DATABASE_URI = SecretStr("sqlite:///:memory:") + app_configs: dict[str, Any] = {"title": "App API"} if settings.ENVIRONMENT.is_deployed: app_configs["root_path"] = f"/v{settings.APP_VERSION}" diff --git a/src/database.py b/src/database.py index 819faeb..673af86 100644 --- a/src/database.py +++ b/src/database.py @@ -7,13 +7,19 @@ Exports: """ from typing import Annotated from sqlalchemy import create_engine -from sqlalchemy.orm import declarative_base, sessionmaker, Session +from sqlalchemy.orm import DeclarativeBase, sessionmaker, Session from fastapi import Depends -from src.config import SQLALCHEMY_DATABASE_URI +from src.constants import Environment +from src.config import SQLALCHEMY_DATABASE_URI, settings as global_settings -engine = create_engine(SQLALCHEMY_DATABASE_URI.get_secret_value()) +if global_settings.ENVIRONMENT == Environment.TESTING: + connect_args = {"check_same_thread": False} +else: + connect_args = {} + +engine = create_engine(SQLALCHEMY_DATABASE_URI.get_secret_value(), connect_args=connect_args) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) @@ -30,4 +36,5 @@ def get_db(): db_dependency = Annotated[Session, Depends(get_db)] -Base = declarative_base() +class Base(DeclarativeBase): + pass