36 lines
839 B
Python
36 lines
839 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):
|
|
mock_user_email: str = "test@test.com"
|
|
|
|
|
|
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"))
|
|
host: str = Field(default=os.getenv("PG_HOST"))
|
|
port: int = Field(default=os.getenv("PG_PORT"))
|
|
|
|
|
|
class _Settings(_BaseConfig):
|
|
app: _AppSettings = _AppSettings()
|
|
db: _DbSettings = _DbSettings()
|
|
|
|
|
|
@lru_cache
|
|
def get_settings() -> _Settings:
|
|
return _Settings()
|