backup.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from typing import Optional, List, Dict
  2. from pydantic import BaseModel
  3. from datetime import datetime
  4. from app.models.backup import BackupType
  5. class BackupRecordBase(BaseModel):
  6. filename: str
  7. backup_type: BackupType
  8. content_types: Optional[str] = None
  9. file_size: Optional[int] = None
  10. class BackupRecordCreate(BackupRecordBase):
  11. file_path: str
  12. class BackupRecord(BackupRecordBase):
  13. id: int
  14. created_at: datetime
  15. class Config:
  16. from_attributes = True
  17. class BackupRecordList(BaseModel):
  18. total: int
  19. items: List[BackupRecord]
  20. class BackupSettingsBase(BaseModel):
  21. auto_backup_enabled: bool
  22. backup_time: str # "HH:MM"
  23. class BackupSettingsUpdate(BackupSettingsBase):
  24. pass
  25. class BackupSettings(BackupSettingsBase):
  26. id: int
  27. last_backup_at: Optional[datetime] = None
  28. updated_at: datetime
  29. class Config:
  30. from_attributes = True
  31. class RestorePreviewResponse(BaseModel):
  32. csv_headers: List[str]
  33. db_columns: List[str]
  34. class RestoreRequest(BaseModel):
  35. restore_type: str # "APPLICATIONS", "USERS", "MAPPINGS"
  36. field_mapping: Dict[str, str] # csv_header -> db_column
  37. password: str
  38. captcha_id: str
  39. captcha_code: str