from __future__ import annotations from datetime import datetime from enum import Enum from typing import List, Optional from pydantic import BaseModel, Field, constr class TokenType(str, Enum): bearer = "bearer" class AuthToken(BaseModel): access_token: str token_type: TokenType expires_at: datetime class ProfileBase(BaseModel): name: constr(min_length=1) folders: List[str] = Field(..., min_items=1) description: Optional[str] = None schedule_enabled: bool = False class ProfileCreate(ProfileBase): pass class ProfileRead(ProfileBase): id: int created_at: datetime updated_at: datetime class BackupStartRequest(BaseModel): profile_id: int client_host: str ssh_username: str ssh_password: str folders: Optional[List[str]] = None class JobStatusResponse(BaseModel): job_id: int status: str progress: int summary: Optional[str] last_log_lines: List[str] = [] created_at: datetime updated_at: datetime class BackupLog(BaseModel): job_id: int lines: List[str] class HealthResponse(BaseModel): status: str version: str