From 3141b181b622bcf363439311ffcbe00ff40c3417 Mon Sep 17 00:00:00 2001 From: Vaibhav Kamra Date: Wed, 21 Dec 2022 22:13:30 -0800 Subject: [PATCH] Address review feedback from #1896 (#1913) ## Description - Adds accessor methods for size/modified - Do not initialize folder in test with a modified time ## Does this PR need a docs update or release note? - [x] :white_check_mark: Yes, it's included - [ ] :clock1: Yes, but in a later PR - [ ] :no_entry: No ## Type of change - [ ] :sunflower: Feature - [ ] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Test - [ ] :computer: CI/Deployment - [x] :hamster: Trivial/Minor ## Test Plan - [ ] :muscle: Manual - [x] :zap: Unit test - [ ] :green_heart: E2E --- CHANGELOG.md | 4 ++ src/pkg/backup/details/details.go | 57 +++++++++++++++++--------- src/pkg/backup/details/details_test.go | 5 +-- 3 files changed, 43 insertions(+), 23 deletions(-) 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{}, }, }