// cloud/maplefile-backend/internal/maplefile/service/dashboard/dto.go package dashboard import ( "codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/service/file" ) // GetDashboardResponseDTO represents the complete dashboard response type GetDashboardResponseDTO struct { Dashboard *DashboardDataDTO `json:"dashboard"` Success bool `json:"success"` Message string `json:"message"` } // DashboardDataDTO contains all the dashboard information type DashboardDataDTO struct { Summary SummaryDTO `json:"summary"` StorageUsageTrend StorageUsageTrendDTO `json:"storage_usage_trend"` RecentFiles []file.RecentFileResponseDTO `json:"recent_files"` CollectionKeys []CollectionKeyDTO `json:"collection_keys,omitempty"` } // CollectionKeyDTO contains the encrypted collection key for client-side decryption // This is safe to include because the collection key is encrypted with the user's master key type CollectionKeyDTO struct { CollectionID string `json:"collection_id"` EncryptedCollectionKey string `json:"encrypted_collection_key"` EncryptedCollectionKeyNonce string `json:"encrypted_collection_key_nonce"` } // SummaryDTO contains the main dashboard statistics type SummaryDTO struct { TotalFiles int `json:"total_files"` TotalFolders int `json:"total_folders"` StorageUsed StorageAmountDTO `json:"storage_used"` StorageLimit StorageAmountDTO `json:"storage_limit"` StorageUsagePercentage int `json:"storage_usage_percentage"` } // StorageAmountDTO represents a storage value with its unit type StorageAmountDTO struct { Value float64 `json:"value"` Unit string `json:"unit"` } // StorageUsageTrendDTO contains the trend chart data type StorageUsageTrendDTO struct { Period string `json:"period"` DataPoints []DataPointDTO `json:"data_points"` } // DataPointDTO represents a single point in the storage usage trend type DataPointDTO struct { Date string `json:"date"` Usage StorageAmountDTO `json:"usage"` }