Add app settings

This commit is contained in:
Jacob Windsor 2025-02-19 12:49:48 +01:00
parent 1e137a4f3a
commit 38dda8ce80
2 changed files with 34 additions and 0 deletions

33
backend/app/settings.py Normal file
View File

@ -0,0 +1,33 @@
import os
from functools import lru_cache
from typing import Optional
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class _BaseConfig(BaseSettings):
model_config = SettingsConfigDict(
env_file=".env", extra="ignore", nested_model_default_partial_update=True
)
class _AppSettings(_BaseConfig):
environment: str = Field(default=os.getenv("ENVIRONMENT"))
class _DbSettings(_BaseConfig):
username: str = Field(default=os.getenv("PG_USER"), alias="PG_USER")
password: str = Field(default=os.getenv("PG_PASSWORD"), alias="PG_PASSWORD")
db_name: str = Field(default=os.getenv("PG_DB_NAME"), alias="PG_DB_NAME")
class _Settings(_BaseConfig):
app: _AppSettings = _AppSettings()
db: _DbSettings = _DbSettings()
@lru_cache
def get_settings() -> _Settings:
return _Settings()

View File

@ -3,3 +3,4 @@ uvicorn
sqlmodel
pydantic
sqlalchemy
pydantic-settings