From bd38ddf1ddc167607a95dee05ee9f30ceb0d3a21 Mon Sep 17 00:00:00 2001 From: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com> Date: Tue, 27 May 2025 18:40:02 -0400 Subject: [PATCH] fix (db): Use variable engine settings --- src/config.py | 14 ++++++++++++-- src/db.py | 8 +------- tests/conftest.py | 1 + 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/config.py b/src/config.py index 451d1845..28093788 100644 --- a/src/config.py +++ b/src/config.py @@ -5,6 +5,7 @@ from typing import Annotated, Any, ClassVar, Optional import tomllib from dotenv import load_dotenv from pydantic import Field, field_validator +from pydantic_core.core_schema import FieldValidationInfo from pydantic_settings import ( BaseSettings, PydanticBaseSettingsSource, @@ -97,7 +98,7 @@ class TomlSettings(BaseSettings): env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource, - ): + ) -> tuple[PydanticBaseSettingsSource, ...]: # Return sources in priority order (first is lowest priority) return ( init_settings, @@ -133,9 +134,18 @@ class DBSettings(TomlSettings): class AuthSettings(TomlSettings): model_config = SettingsConfigDict(env_prefix="AUTH_") - USE_AUTH: bool = True + USE_AUTH: bool = False JWT_SECRET: Optional[str] = None # Must be set if USE_AUTH is true + @field_validator("JWT_SECRET") + @classmethod + def _require_jwt_secret( + cls, v: Optional[str], info: FieldValidationInfo + ) -> Optional[str]: + if info.data.get("USE_AUTH") and v is None: + raise ValueError("JWT_SECRET must be set if USE_AUTH is true") + return v + class SentrySettings(TomlSettings): model_config = SettingsConfigDict(env_prefix="SENTRY_") diff --git a/src/db.py b/src/db.py index 3a2b27d3..9de3f8c6 100644 --- a/src/db.py +++ b/src/db.py @@ -38,13 +38,7 @@ engine = create_async_engine( settings.DB.CONNECTION_URI, connect_args=connect_args, echo=settings.DB.SQL_DEBUG, - pool_pre_ping=settings.DB.POOL_PRE_PING, - pool_size=settings.DB.POOL_SIZE, - max_overflow=settings.DB.MAX_OVERFLOW, - pool_timeout=settings.DB.POOL_TIMEOUT, - pool_recycle=settings.DB.POOL_RECYCLE, - pool_use_lifo=settings.DB.POOL_USE_LIFO, - poolclass=pool_class, + **engine_kwargs, ) SessionLocal = async_sessionmaker( diff --git a/tests/conftest.py b/tests/conftest.py index 1488cac7..0328e49b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -181,6 +181,7 @@ def auth_client(client, request, monkeypatch): """ # Ensure USE_AUTH is always True for this fixture monkeypatch.setattr(settings.AUTH, "USE_AUTH", True) + monkeypatch.setattr(settings.AUTH, "JWT_SECRET", "test-secret") # Clear any existing Authorization header client.headers.pop("Authorization", None)