from datetime import UTC, datetime from functools import lru_cache from pathlib import Path from pydantic import Field, MongoDsn from pydantic_settings import BaseSettings, SettingsConfigDict ENV_FILE = Path(__file__).parent / ".env" class Settings(BaseSettings): APP_NAME: str = "sms-bot" API_ID: int API_HASH: str BOT_TOKEN: str STARTUP_DATETIME: datetime = datetime.now(UTC) model_config = SettingsConfigDict(env_file=ENV_FILE, extra="ignore") class DatabaseConfig(BaseSettings): URL: MongoDsn = Field(alias="DATABASE_URL") NAME: str = "sms-bot" model_config = SettingsConfigDict(env_file=ENV_FILE, extra="ignore", env_prefix="DATABASE") @lru_cache(maxsize=1) def get_settings() -> Settings: return Settings() @lru_cache(maxsize=1) def get_database_settings() -> DatabaseConfig: return DatabaseConfig()