"""Settings management.""" from pathlib import Path from pydantic import Field from pydantic_settings import ( BaseSettings, SettingsConfigDict, ) from sqlalchemy import URL DEFAULT_DATABASE = "sshecret.db" class BackendSettings(BaseSettings): """Backend settings.""" model_config = SettingsConfigDict( env_file=".backend.env", env_prefix="sshecret_backend_" ) database: str = Field(default=DEFAULT_DATABASE) admin_token: str | None = Field(default=None, alias="sshecret_admin_backend_token") sshd_token: str | None = Field(default=None, alias="sshecret_sshd_backend_token") @property def db_url(self) -> URL: """Construct database url.""" return URL.create(drivername="sqlite", database=self.database) @property def async_db_url(self) -> URL: """Construct database url with sync handling.""" return URL.create(drivername="sqlite+aiosqlite", database=self.database) @property def db_exists(self) -> bool: """Check if databatase exists.""" return Path(self.database).exists() def get_settings() -> BackendSettings: """Get settings.""" return BackendSettings()