from pydantic_settings import BaseSettings from typing import Optional from pydantic import field_validator, ConfigDict class Settings(BaseSettings): # Database database_url: str = "sqlite+aiosqlite:///./mockapi.db" # Application debug: bool = False title: str = "Mock API Server" version: str = "1.0.0" # Admin authentication admin_username: str = "admin" admin_password: str = "admin123" secret_key: str = "your-secret-key-here-change-me" # Security session_cookie_name: str = "mockapi_session" session_max_age: int = 24 * 60 * 60 # 24 hours @field_validator('admin_password') def validate_admin_password(cls, v, info): if not info.data.get('debug', True) and v == "admin123": raise ValueError( 'admin_password must be set via environment variable in production (debug=False)' ) return v @field_validator('secret_key') def validate_secret_key(cls, v, info): if not info.data.get('debug', True) and v == "your-secret-key-here-change-me": raise ValueError( 'secret_key must be set via environment variable in production (debug=False)' ) return v model_config = ConfigDict(env_file=".env") settings = Settings()