50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class BackupResponse(BaseModel):
|
|
id: int
|
|
router_id: int
|
|
router_name: str | None = None
|
|
file_path: str
|
|
file_name: str
|
|
backup_type: str
|
|
checksum: str | None = None
|
|
file_size: int | None = None
|
|
created_at: datetime
|
|
|
|
model_config = {'from_attributes': True}
|
|
|
|
|
|
class BackupDiffLine(BaseModel):
|
|
type: Literal['context', 'added', 'removed', 'modified']
|
|
left_number: int | None = None
|
|
right_number: int | None = None
|
|
left_text: str = ''
|
|
right_text: str = ''
|
|
|
|
|
|
class BackupDiffStats(BaseModel):
|
|
added: int = 0
|
|
removed: int = 0
|
|
modified: int = 0
|
|
context: int = 0
|
|
|
|
|
|
class BackupDiffResponse(BaseModel):
|
|
left_backup_id: int
|
|
right_backup_id: int
|
|
left_file_name: str | None = None
|
|
right_file_name: str | None = None
|
|
diff_text: str
|
|
diff_html: str | None = None
|
|
stats: BackupDiffStats | None = None
|
|
lines: list[BackupDiffLine] = []
|
|
|
|
|
|
class BulkActionRequest(BaseModel):
|
|
action: Literal['download', 'delete']
|
|
backup_ids: list[int]
|