29 lines
1.3 KiB
Python
29 lines
1.3 KiB
Python
from typing import Optional
|
|
from pydantic import BaseSettings, Field
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application settings from environment variables."""
|
|
jwt_secret_key: str = Field(default="your-secret-key-here", env="JWT_SECRET_KEY")
|
|
password_salt: str = Field(default="default-salt", env="PASSWORD_SALT")
|
|
master_password_hash: Optional[str] = Field(default=None, env="MASTER_PASSWORD_HASH")
|
|
master_password: Optional[str] = Field(default=None, env="MASTER_PASSWORD") # For development
|
|
token_expiry_hours: int = Field(default=24, env="SESSION_TIMEOUT_HOURS")
|
|
anime_directory: str = Field(default="", env="ANIME_DIRECTORY")
|
|
log_level: str = Field(default="INFO", env="LOG_LEVEL")
|
|
|
|
# Additional settings from .env
|
|
database_url: str = Field(default="sqlite:///./data/aniworld.db", env="DATABASE_URL")
|
|
cors_origins: str = Field(default="*", env="CORS_ORIGINS")
|
|
api_rate_limit: int = Field(default=100, env="API_RATE_LIMIT")
|
|
default_provider: str = Field(default="aniworld.to", env="DEFAULT_PROVIDER")
|
|
provider_timeout: int = Field(default=30, env="PROVIDER_TIMEOUT")
|
|
retry_attempts: int = Field(default=3, env="RETRY_ATTEMPTS")
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
extra = "ignore"
|
|
|
|
|
|
settings = Settings()
|