Lift'n'shift of existing code (#1925)

## Description

Factor out code to get a set of FolderEntries based on some path information. This code will be used in BackupOp when merging item details.

## Does this PR need a docs update or release note?

- [ ]  Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x]  No 

## Type of change

- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Test
- [ ] 💻 CI/Deployment
- [x] 🐹 Trivial/Minor

## Issue(s)

* #1800 

## Test Plan

- [ ] 💪 Manual
- [x]  Unit test
- [ ] 💚 E2E
This commit is contained in:
ashmrtn 2022-12-22 15:55:17 -08:00 committed by GitHub
parent 168ba1b88c
commit 04851f45dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 19 deletions

View File

@ -183,25 +183,7 @@ func (cp *corsoProgress) FinishedFile(relativePath string, err error) {
*d.info,
)
folders := []details.FolderEntry{}
for len(parent.Elements()) > 0 {
nextParent := parent.Dir()
folders = append(folders, details.FolderEntry{
RepoRef: parent.String(),
ShortRef: parent.ShortRef(),
ParentRef: nextParent.ShortRef(),
Info: details.ItemInfo{
Folder: &details.FolderInfo{
DisplayName: parent.Elements()[len(parent.Elements())-1],
},
},
})
parent = nextParent
}
folders := details.FolderEntriesForPath(parent)
cp.deets.AddFoldersForItem(folders, *d.info)
}

View File

@ -127,6 +127,32 @@ func (b *Builder) Details() *Details {
return &b.d
}
// TODO(ashmrtn): If we never need to pre-populate the modified time of a folder
// we should just merge this with AddFoldersForItem, have Add call
// AddFoldersForItem, and unexport AddFoldersForItem.
func FolderEntriesForPath(parent *path.Builder) []FolderEntry {
folders := []FolderEntry{}
for len(parent.Elements()) > 0 {
nextParent := parent.Dir()
folders = append(folders, FolderEntry{
RepoRef: parent.String(),
ShortRef: parent.ShortRef(),
ParentRef: nextParent.ShortRef(),
Info: ItemInfo{
Folder: &FolderInfo{
DisplayName: parent.Elements()[len(parent.Elements())-1],
},
},
})
parent = nextParent
}
return folders
}
// AddFoldersForItem adds entries for the given folders. It skips adding entries that
// have been added by previous calls.
func (b *Builder) AddFoldersForItem(folders []FolderEntry, itemInfo ItemInfo) {