Files
sshecret/packages/sshecret-backend/src/sshecret_backend/settings.py

45 lines
1.2 KiB
Python

"""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()