backup.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 MappingFileInfo(BaseModel):
  32. filename: str
  33. app_id: Optional[str] = None
  34. class RestorePreviewResponse(BaseModel):
  35. csv_headers: List[str]
  36. db_columns: List[str]
  37. mapping_files: Optional[List[MappingFileInfo]] = None
  38. class RestoreRequest(BaseModel):
  39. restore_type: str
  40. field_mapping: Dict[str, str]
  41. password: str
  42. sms_code: str
  43. selected_files: Optional[List[str]] = None # List of filenames to restore (for MAPPINGS)
  44. class SendSmsRequest(BaseModel):
  45. captcha_id: str
  46. captcha_code: str