diff --git a/CHANGELOG.md b/CHANGELOG.md index 422c92a33..6c412e858 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Folder entries in backup details now include size and modified time for the hierarchy (#1896) + ### Changed - **Breaking Change**: diff --git a/src/pkg/backup/details/details.go b/src/pkg/backup/details/details.go index c64ecce51..61f7dc47e 100644 --- a/src/pkg/backup/details/details.go +++ b/src/pkg/backup/details/details.go @@ -145,26 +145,9 @@ func (b *Builder) AddFoldersForItem(folders []FolderEntry, itemInfo ItemInfo) { } // Update the folder's size and modified time - var ( - itemSize int64 - itemModified time.Time - ) + itemModified := itemInfo.modified() - switch { - case itemInfo.Exchange != nil: - itemSize = itemInfo.Exchange.Size - itemModified = itemInfo.Exchange.Modified - - case itemInfo.OneDrive != nil: - itemSize = itemInfo.OneDrive.Size - itemModified = itemInfo.OneDrive.Modified - - case itemInfo.SharePoint != nil: - itemSize = itemInfo.SharePoint.Size - itemModified = itemInfo.SharePoint.Modified - } - - folder.Info.Folder.Size += itemSize + folder.Info.Folder.Size += itemInfo.size() if folder.Info.Folder.Modified.Before(itemModified) { folder.Info.Folder.Modified = itemModified @@ -346,6 +329,42 @@ func (i ItemInfo) infoType() ItemType { return UnknownType } +func (i ItemInfo) size() int64 { + switch { + case i.Exchange != nil: + return i.Exchange.Size + + case i.OneDrive != nil: + return i.OneDrive.Size + + case i.SharePoint != nil: + return i.SharePoint.Size + + case i.Folder != nil: + return i.Folder.Size + } + + return 0 +} + +func (i ItemInfo) modified() time.Time { + switch { + case i.Exchange != nil: + return i.Exchange.Modified + + case i.OneDrive != nil: + return i.OneDrive.Modified + + case i.SharePoint != nil: + return i.SharePoint.Modified + + case i.Folder != nil: + return i.Folder.Modified + } + + return time.Time{} +} + type FolderInfo struct { ItemType ItemType `json:"itemType,omitempty"` DisplayName string `json:"displayName"` diff --git a/src/pkg/backup/details/details_test.go b/src/pkg/backup/details/details_test.go index af363317f..90dad366c 100644 --- a/src/pkg/backup/details/details_test.go +++ b/src/pkg/backup/details/details_test.go @@ -341,7 +341,6 @@ func (suite *DetailsUnitSuite) TestDetails_AddFolders() { func (suite *DetailsUnitSuite) TestDetails_AddFoldersDifferentServices() { itemTime := time.Date(2022, 10, 21, 10, 0, 0, 0, time.UTC) - folderTimeOlderThanItem := time.Date(2022, 9, 21, 10, 0, 0, 0, time.UTC) table := []struct { name string @@ -395,9 +394,7 @@ func (suite *DetailsUnitSuite) TestDetails_AddFoldersDifferentServices() { ShortRef: "sr1", ParentRef: "pr1", Info: details.ItemInfo{ - Folder: &details.FolderInfo{ - Modified: folderTimeOlderThanItem, - }, + Folder: &details.FolderInfo{}, }, }