32 lines
703 B
Python
32 lines
703 B
Python
|
|
from functools import lru_cache
|
|
|
|
from pydantic import Field
|
|
from pydantic_settings import BaseSettings
|
|
|
|
from dotenv import load_dotenv
|
|
import os
|
|
|
|
load_dotenv()
|
|
|
|
class _BaseConfig(BaseSettings):
|
|
environment: str = Field(default=os.getenv("ENVIRONMENT", "development"))
|
|
|
|
class _AppSettings(_BaseConfig):
|
|
pass
|
|
|
|
class _DbSettings(_BaseConfig):
|
|
username: str = Field(default=os.getenv("PG_USER"))
|
|
password: str = Field(default=os.getenv("PG_PASSWORD"))
|
|
db_name: str = Field(default=os.getenv("PG_DB_NAME"))
|
|
|
|
|
|
class _Settings(_BaseConfig):
|
|
app: _AppSettings = _AppSettings()
|
|
db: _DbSettings = _DbSettings()
|
|
|
|
|
|
@lru_cache
|
|
def get_settings() -> _Settings:
|
|
return _Settings()
|