fleet-platform/app/config.py

33 lines
1.3 KiB
Python
Raw Normal View History

from functools import lru_cache
from typing import Literal
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore")
database_url: str = Field(alias="DATABASE_URL")
jwt_secret: str = Field(alias="JWT_SECRET")
jwt_access_ttl_min: int = Field(default=15, alias="JWT_ACCESS_TTL_MIN")
jwt_refresh_ttl_days: int = Field(default=30, alias="JWT_REFRESH_TTL_DAYS")
tracksolid_push_token: str = Field(default="", alias="TRACKSOLID_PUSH_TOKEN")
tracksolid_api_base_url: str = Field(default="", alias="TRACKSOLID_API_BASE_URL")
ntfy_base_url: str = Field(default="", alias="NTFY_BASE_URL")
ntfy_topic: str = Field(default="fleet-slo-breach", alias="NTFY_TOPIC")
ntfy_token: str = Field(default="", alias="NTFY_TOKEN")
app_mode: Literal["dev", "prod"] = Field(default="prod", alias="APP_MODE")
app_role: Literal["gateway", "worker", "cron"] = Field(default="gateway", alias="APP_ROLE")
app_log_level: str = Field(default="INFO", alias="APP_LOG_LEVEL")
app_git_sha: str = Field(default="unknown", alias="APP_GIT_SHA")
@lru_cache(maxsize=1)
def get_settings() -> Settings:
return Settings()