from datetime import datetime from pydantic import BaseModel, Field class BackupManifest(BaseModel): backup_id: str created_at: datetime app_version: str backup_type: str = "full" database_url_host_anonymized: str database_name: str storage_base_path: str included_sections: list[str] = Field(default_factory=list) file_count: int = 0 total_size_bytes: int = 0 checksum_sha256: str created_by_user_id: int | None = None created_by_username: str = "" class BackupSummary(BaseModel): filename: str size_bytes: int created_at: datetime | None = None app_version: str = "" backup_type: str = "full" database_name: str = "" storage_base_path: str = "" file_count: int = 0 total_size_bytes: int = 0 created_by_user_id: int | None = None created_by_username: str = "" validation_status: str = "valid" validation_message: str = "" class BackupListResponse(BaseModel): items: list[BackupSummary] = Field(default_factory=list) total_count: int = 0 total_size_bytes: int = 0 latest_backup_at: datetime | None = None class BackupValidationResponse(BaseModel): filename: str valid: bool message: str issues: list[str] = Field(default_factory=list) checksum_valid: bool = False restore_supported: bool = False requires_cli_restore: bool = True manifest: BackupManifest | None = None class BackupRestoreRequest(BaseModel): confirm_text: str