from pydantic_settings import BaseSettings from pydantic import Field from typing import Optional class Settings(BaseSettings): # Database database_url: str = Field(..., env="DATABASE_URL") # Redis redis_url: str = Field("redis://localhost:6379/0", env="REDIS_URL") # Auth secret_key: str = Field(..., env="SECRET_KEY") algorithm: str = "HS256" access_token_expire_minutes: int = 60 * 24 * 7 # 7 days # Admin account - optional so the worker (which doesn't seed users) can start # without it. The backend service checks this at seed time. admin_username: str = Field("admin", env="ADMIN_USERNAME") admin_password: Optional[str] = Field(None, env="ADMIN_PASSWORD") # PocketID OIDC (optional) pocketid_issuer: Optional[str] = Field(None, env="POCKETID_ISSUER") pocketid_client_id: Optional[str] = Field(None, env="POCKETID_CLIENT_ID") pocketid_client_secret: Optional[str] = Field(None, env="POCKETID_CLIENT_SECRET") # Files file_store_path: str = Field("/data/files", env="FILE_STORE_PATH") # Environment environment: str = Field("production", env="ENVIRONMENT") class Config: env_file = ".env" case_sensitive = False settings = Settings()