diff --git a/app/config.py b/app/config.py index b7574cb..79edf02 100644 --- a/app/config.py +++ b/app/config.py @@ -1,46 +1,20 @@ import os from functools import lru_cache -from pydantic import BaseSettings - -from app.utils import get_logger - -logger = get_logger(__name__) +from pydantic import BaseSettings, PostgresDsn class Settings(BaseSettings): - """ - - BaseSettings, from Pydantic, validates the data so that when we create an instance of Settings, - environment and testing will have types of str and bool, respectively. - - Parameters: - pg_user (str): - pg_pass (str): - pg_database: (str): - pg_test_database: (str): - asyncpg_url: AnyUrl: - asyncpg_test_url: AnyUrl: - - Returns: - instance of Settings - - """ - - pg_user: str = os.getenv("SQL_USER", "") - pg_pass: str = os.getenv("POSTGRES_PASSWORD", "") - pg_host: str = os.getenv("SQL_HOST", "") - pg_database: str = os.getenv("SQL_DB", "") - asyncpg_url: str = ( - f"postgresql+asyncpg://{pg_user}:{pg_pass}@{pg_host}:5432/{pg_database}" + asyncpg_url: PostgresDsn = PostgresDsn.build( + scheme="postgresql+asyncpg", + user=os.getenv("SQL_USER"), + password=os.getenv("POSTGRES_PASSWORD"), + host=os.getenv("SQL_HOST"), + port="5432", + path=f"/{os.getenv('SQL_DB') or ''}", ) - jwt_secret_key: str = os.getenv("SECRET_KEY", "") - jwt_algorithm: str = os.getenv("ALGORITHM", "") - jwt_access_toke_expire_minutes: int = os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES", 1) - @lru_cache def get_settings(): - logger.info("Loading config settings from the environment...") return Settings() diff --git a/app/database.py b/app/database.py index 2ff3fc6..b0c2783 100644 --- a/app/database.py +++ b/app/database.py @@ -1,6 +1,5 @@ from collections.abc import AsyncGenerator -from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine from sqlalchemy.orm import sessionmaker @@ -10,13 +9,11 @@ from app.utils import get_logger logger = get_logger(__name__) global_settings = config.get_settings() -url = global_settings.asyncpg_url engine = create_async_engine( - url, + global_settings.asyncpg_url, future=True, echo=True, - json_serializer=jsonable_encoder, ) # expire_on_commit=False will prevent attributes from being expired diff --git a/app/main.py b/app/main.py index 0a5aa26..80abb46 100644 --- a/app/main.py +++ b/app/main.py @@ -7,7 +7,7 @@ from app.utils import get_logger logger = get_logger(__name__) -app = FastAPI(title="Stuff And Nonsense API", version="0.4") +app = FastAPI(title="Stuff And Nonsense API", version="0.5") app.include_router(stuff_router) app.include_router(nonsense_router)