sync.go 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. package models
  2. import (
  3. "time"
  4. )
  5. // SyncSetting represents user sync configurations and cloud storage allocation
  6. type SyncSetting struct {
  7. UserID string `gorm:"type:uuid;primaryKey" json:"userId"`
  8. AutoSyncWiFi bool `gorm:"default:true" json:"autoSyncWiFi"`
  9. SyncPhotos bool `gorm:"default:true" json:"syncPhotos"`
  10. SyncAudio bool `gorm:"default:true" json:"syncAudio"`
  11. AudioQuality string `gorm:"size:20;default:'HD'" json:"audioQuality"` // Standard, HD, Lossless
  12. CloudStorageMaxMB int64 `gorm:"default:5120" json:"cloudStorageMaxMB"` // 5 GB default
  13. CloudStorageUsedMB int64 `gorm:"default:0" json:"cloudStorageUsedMB"`
  14. LastSyncedAt *time.Time `json:"lastSyncedAt,omitempty"`
  15. UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updatedAt"`
  16. }
  17. type UpdateSyncSettingRequest struct {
  18. AutoSyncWiFi *bool `json:"autoSyncWiFi,omitempty"`
  19. SyncPhotos *bool `json:"syncPhotos,omitempty"`
  20. SyncAudio *bool `json:"syncAudio,omitempty"`
  21. AudioQuality *string `json:"audioQuality,omitempty"`
  22. }
  23. type SyncSummary struct {
  24. DeviceCount int64 `json:"deviceCount"`
  25. SessionCount int64 `json:"sessionCount"`
  26. TotalDurationMs int64 `json:"totalDurationMs"`
  27. Storage SyncSetting `json:"storage"`
  28. }