backup.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. import enum
  2. from sqlalchemy import Column, Integer, String, DateTime, Boolean, Enum, Text
  3. from sqlalchemy.sql import func
  4. from app.core.database import Base
  5. class BackupType(str, enum.Enum):
  6. MANUAL = "MANUAL"
  7. AUTO = "AUTO"
  8. class BackupRecord(Base):
  9. __tablename__ = "backup_records"
  10. id = Column(Integer, primary_key=True, index=True)
  11. filename = Column(String(255), nullable=False)
  12. file_path = Column(String(512), nullable=False)
  13. backup_type = Column(Enum(BackupType), default=BackupType.MANUAL, nullable=False)
  14. created_at = Column(DateTime(timezone=True), server_default=func.now())
  15. # "users,applications,mappings"
  16. content_types = Column(String(255), nullable=True)
  17. file_size = Column(Integer, nullable=True) # Bytes
  18. class BackupSettings(Base):
  19. __tablename__ = "backup_settings"
  20. id = Column(Integer, primary_key=True, index=True)
  21. auto_backup_enabled = Column(Boolean, default=False)
  22. # 备份时间,例如 "02:00" (每天凌晨2点)
  23. backup_time = Column(String(10), default="02:00")
  24. # 上次自动备份时间
  25. last_backup_at = Column(DateTime(timezone=True), nullable=True)
  26. updated_at = Column(DateTime(timezone=True), onupdate=func.now(), server_default=func.now())