import secrets import logging from pydantic_settings import BaseSettings from pathlib import Path log = logging.getLogger(__name__) class Settings(BaseSettings): database_url: str = "sqlite+aiosqlite:////data/medialore.db" media_root: str = "/media" thumbnail_dir: str = "/data/thumbnails" secret_key: str = "" admin_username: str = "admin" admin_password: str = "" access_token_expire_days: int = 30 model_config = {"env_file": ".env"} settings = Settings() if not settings.secret_key: settings.secret_key = secrets.token_urlsafe(32) log.warning( "SECRET_KEY not set — generated random key: %s. " "All sessions will be invalidated on restart. " "Set SECRET_KEY in .env for persistent sessions.", settings.secret_key, ) THUMBNAIL_DIR = Path(settings.thumbnail_dir) THUMBNAIL_DIR.mkdir(parents=True, exist_ok=True)