-
Notifications
You must be signed in to change notification settings - Fork 74
Expand file tree
/
Copy pathloader.py
More file actions
82 lines (49 loc) · 2.2 KB
/
loader.py
File metadata and controls
82 lines (49 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from pathlib import Path
from typing import Final
from pydantic_settings import BaseSettings, SettingsConfigDict
from app.main.config.settings import (
AppSettings,
CookieSettings,
JwtSettings,
PasswordHasherSettings,
PostgresSettings,
SessionSettings,
SqlaSettings,
)
BASE_DIR: Final[Path] = Path(__file__).resolve().parents[4]
_ENV_FILE: Final[Path] = BASE_DIR.joinpath(".env")
_DEFAULT_CONFIG_DICT: Final[SettingsConfigDict] = SettingsConfigDict(
env_file=_ENV_FILE,
env_file_encoding="utf-8",
extra="ignore",
)
def _load_settings[E: BaseSettings](env_cls: type[E]) -> E:
return env_cls()
class AppEnvConfig(BaseSettings, AppSettings):
model_config = _DEFAULT_CONFIG_DICT | SettingsConfigDict(env_prefix="APP_")
class PostgresEnvConfig(BaseSettings, PostgresSettings):
model_config = _DEFAULT_CONFIG_DICT | SettingsConfigDict(env_prefix="POSTGRES_")
class SqlaEnvConfig(BaseSettings, SqlaSettings):
model_config = _DEFAULT_CONFIG_DICT | SettingsConfigDict(env_prefix="SQLA_")
class PasswordHasherEnvConfig(BaseSettings, PasswordHasherSettings):
model_config = _DEFAULT_CONFIG_DICT | SettingsConfigDict(env_prefix="PASSWORD_")
class JwtEnvConfig(BaseSettings, JwtSettings):
model_config = _DEFAULT_CONFIG_DICT | SettingsConfigDict(env_prefix="JWT_")
class SessionEnvConfig(BaseSettings, SessionSettings):
model_config = _DEFAULT_CONFIG_DICT | SettingsConfigDict(env_prefix="SESSION_")
class CookieEnvConfig(BaseSettings, CookieSettings):
model_config = _DEFAULT_CONFIG_DICT | SettingsConfigDict(env_prefix="COOKIE_")
def load_app_settings() -> AppSettings:
return _load_settings(AppEnvConfig)
def load_postgres_settings() -> PostgresSettings:
return _load_settings(PostgresEnvConfig)
def load_sqla_settings() -> SqlaSettings:
return _load_settings(SqlaEnvConfig)
def load_password_hasher_settings() -> PasswordHasherSettings:
return _load_settings(PasswordHasherEnvConfig)
def load_jwt_settings() -> JwtSettings:
return _load_settings(JwtEnvConfig)
def load_session_settings() -> SessionSettings:
return _load_settings(SessionEnvConfig)
def load_cookie_settings() -> CookieSettings:
return _load_settings(CookieEnvConfig)