diff --git a/src/internal/m365/collection/drive/collections_test.go b/src/internal/m365/collection/drive/collections_test.go index 085bbc0b7..e81477142 100644 --- a/src/internal/m365/collection/drive/collections_test.go +++ b/src/internal/m365/collection/drive/collections_test.go @@ -1129,7 +1129,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestDeserializeMetadata() { cols := []data.RestoreCollection{} for _, c := range test.cols { - pathPrefix, err := path.Builder{}.ToServiceCategoryMetadataPath( + pathPrefix, err := path.BuildMetadata( tenant, user, path.OneDriveService, @@ -1194,7 +1194,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestGet() { delta2 = "delta2" ) - metadataPath, err := path.Builder{}.ToServiceCategoryMetadataPath( + metadataPath, err := path.BuildMetadata( tenant, user, path.OneDriveService, diff --git a/src/internal/m365/collection/drive/group_handler.go b/src/internal/m365/collection/drive/group_handler.go index 91d627510..935392bfd 100644 --- a/src/internal/m365/collection/drive/group_handler.go +++ b/src/internal/m365/collection/drive/group_handler.go @@ -53,7 +53,7 @@ func (h groupBackupHandler) PathPrefix( } func (h groupBackupHandler) MetadataPathPrefix(tenantID string) (path.Path, error) { - p, err := path.Builder{}.ToServiceCategoryMetadataPath( + p, err := path.BuildMetadata( tenantID, h.groupID, h.service, diff --git a/src/internal/m365/collection/drive/item_handler.go b/src/internal/m365/collection/drive/item_handler.go index fa5a21252..4a62f35e3 100644 --- a/src/internal/m365/collection/drive/item_handler.go +++ b/src/internal/m365/collection/drive/item_handler.go @@ -57,7 +57,7 @@ func (h itemBackupHandler) PathPrefix( func (h itemBackupHandler) MetadataPathPrefix( tenantID string, ) (path.Path, error) { - p, err := path.Builder{}.ToServiceCategoryMetadataPath( + p, err := path.BuildMetadata( tenantID, h.userID, path.OneDriveService, diff --git a/src/internal/m365/collection/drive/library_handler.go b/src/internal/m365/collection/drive/library_handler.go index 02c3c6b68..4ec00f4da 100644 --- a/src/internal/m365/collection/drive/library_handler.go +++ b/src/internal/m365/collection/drive/library_handler.go @@ -61,7 +61,7 @@ func (h libraryBackupHandler) PathPrefix( func (h libraryBackupHandler) MetadataPathPrefix( tenantID string, ) (path.Path, error) { - p, err := path.Builder{}.ToServiceCategoryMetadataPath( + p, err := path.BuildMetadata( tenantID, h.siteID, h.service, diff --git a/src/internal/m365/collection/exchange/backup.go b/src/internal/m365/collection/exchange/backup.go index 7764ef200..52251001c 100644 --- a/src/internal/m365/collection/exchange/backup.go +++ b/src/internal/m365/collection/exchange/backup.go @@ -267,7 +267,7 @@ func populateCollections( "num_paths_entries", len(currPaths), "num_deltas_entries", len(deltaURLs)) - pathPrefix, err := path.Builder{}.ToServiceCategoryMetadataPath( + pathPrefix, err := path.BuildMetadata( qp.TenantID, qp.ProtectedResource.ID(), path.ExchangeService, diff --git a/src/internal/m365/collection/exchange/backup_test.go b/src/internal/m365/collection/exchange/backup_test.go index 75b3f2bfe..56bf278a5 100644 --- a/src/internal/m365/collection/exchange/backup_test.go +++ b/src/internal/m365/collection/exchange/backup_test.go @@ -299,7 +299,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() { graph.NewMetadataEntry(d.fileName, map[string]string{"key": d.value})) } - pathPrefix, err := path.Builder{}.ToServiceCategoryMetadataPath( + pathPrefix, err := path.BuildMetadata( "t", "u", path.ExchangeService, path.EmailCategory, diff --git a/src/internal/m365/graph/metadata_collection_test.go b/src/internal/m365/graph/metadata_collection_test.go index d280c13ff..57ecb0700 100644 --- a/src/internal/m365/graph/metadata_collection_test.go +++ b/src/internal/m365/graph/metadata_collection_test.go @@ -165,7 +165,7 @@ func (suite *MetadataCollectionUnitSuite) TestMakeMetadataCollection() { ctx, flush := tester.NewContext(t) defer flush() - pathPrefix, err := path.Builder{}.ToServiceCategoryMetadataPath( + pathPrefix, err := path.BuildMetadata( tenant, user, test.service, diff --git a/src/internal/m365/service/onedrive/mock/handlers.go b/src/internal/m365/service/onedrive/mock/handlers.go index 88f70f5fe..f0e0286d5 100644 --- a/src/internal/m365/service/onedrive/mock/handlers.go +++ b/src/internal/m365/service/onedrive/mock/handlers.go @@ -191,7 +191,7 @@ var defaultOneDrivePathPrefixer = func(tID, ro, driveID string) (path.Path, erro } var defaultOneDriveMetadataPathPrefixer = func(tID, ro string) (path.Path, error) { - return path.Builder{}.ToServiceCategoryMetadataPath( + return path.BuildMetadata( tID, ro, path.OneDriveService, @@ -212,7 +212,7 @@ var defaultSharePointPathPrefixer = func(tID, ro, driveID string) (path.Path, er } var defaultSharePointMetadataPathPrefixer = func(tID, ro string) (path.Path, error) { - return path.Builder{}.ToServiceCategoryMetadataPath( + return path.BuildMetadata( tID, ro, path.SharePointService, diff --git a/src/internal/operations/backup_test.go b/src/internal/operations/backup_test.go index bf92f4bf5..cd690e72e 100644 --- a/src/internal/operations/backup_test.go +++ b/src/internal/operations/backup_test.go @@ -218,7 +218,7 @@ func makeMetadataBasePath( ) path.Path { t.Helper() - p, err := path.Builder{}.ToServiceCategoryMetadataPath( + p, err := path.BuildMetadata( tenant, resourceOwner, service, @@ -1871,7 +1871,7 @@ func (suite *AssistBackupIntegrationSuite) TestBackupTypesForFailureModes() { cs := test.collFunc() - pathPrefix, err := path.Builder{}.ToServiceCategoryMetadataPath( + pathPrefix, err := path.BuildMetadata( tenantID, userID, path.OneDriveService, @@ -2189,7 +2189,7 @@ func (suite *AssistBackupIntegrationSuite) TestExtensionsIncrementals() { cs := test.collFunc() - pathPrefix, err := path.Builder{}.ToServiceCategoryMetadataPath( + pathPrefix, err := path.BuildMetadata( tenantID, userID, path.OneDriveService, diff --git a/src/internal/operations/manifests.go b/src/internal/operations/manifests.go index 95b313adc..00d05886c 100644 --- a/src/internal/operations/manifests.go +++ b/src/internal/operations/manifests.go @@ -141,14 +141,13 @@ func collectMetadata( for _, fn := range fileNames { for _, reason := range man.Reasons { - p, err := path.Builder{}. - Append(fn). - ToServiceCategoryMetadataPath( - tenantID, - reason.ProtectedResource(), - reason.Service(), - reason.Category(), - true) + p, err := path.BuildMetadata( + tenantID, + reason.ProtectedResource(), + reason.Service(), + reason.Category(), + true, + fn) if err != nil { return nil, clues. Wrap(err, "building metadata path"). diff --git a/src/internal/operations/test/helper_test.go b/src/internal/operations/test/helper_test.go index 2d74dfd2e..2ab5cd02b 100644 --- a/src/internal/operations/test/helper_test.go +++ b/src/internal/operations/test/helper_test.go @@ -286,9 +286,7 @@ func checkMetadataFilesExist( pathsByRef := map[string][]string{} for _, fName := range files { - p, err := path.Builder{}. - Append(fName). - ToServiceCategoryMetadataPath(tenant, resourceOwner, service, category, true) + p, err := path.BuildMetadata(tenant, resourceOwner, service, category, true, fName) if !assert.NoError(t, err, "bad metadata path", clues.ToCore(err)) { continue } diff --git a/src/pkg/path/builder.go b/src/pkg/path/builder.go index 7b27f6586..34df00e80 100644 --- a/src/pkg/path/builder.go +++ b/src/pkg/path/builder.go @@ -258,7 +258,7 @@ func (pb Builder) ToStreamStorePath( } func (pb Builder) ToServiceCategoryMetadataPath( - tenant, user string, + tenant, protectedResource string, service ServiceType, category CategoryType, isItem bool, @@ -267,7 +267,7 @@ func (pb Builder) ToServiceCategoryMetadataPath( return nil, err } - if err := verifyInputValues(tenant, user); err != nil { + if err := verifyInputValues(tenant, protectedResource); err != nil { return nil, err } @@ -288,17 +288,18 @@ func (pb Builder) ToServiceCategoryMetadataPath( metadataService = GroupsMetadataService } - return &dataLayerResourcePath{ + rp := dataLayerResourcePath{ Builder: *pb.withPrefix( tenant, metadataService.String(), - user, - category.String(), - ), + protectedResource, + category.String()), service: metadataService, category: category, hasItem: isItem, - }, nil + } + + return &rp, nil } func (pb Builder) ToDataLayerPath( diff --git a/src/pkg/path/path.go b/src/pkg/path/path.go index 8f8463b42..4a0609411 100644 --- a/src/pkg/path/path.go +++ b/src/pkg/path/path.go @@ -146,6 +146,22 @@ func Build( hasItem) } +// BuildMetadata is a shorthand for Builder{}.Append(...).ToServiceCategoryMetadataPath(...) +func BuildMetadata( + tenant, resourceOwner string, + service ServiceType, + category CategoryType, + hasItem bool, + elements ...string, +) (Path, error) { + return Builder{}. + Append(elements...). + ToServiceCategoryMetadataPath( + tenant, resourceOwner, + service, category, + hasItem) +} + func BuildPrefix( tenant, resourceOwner string, s ServiceType, diff --git a/src/pkg/path/resource_path_test.go b/src/pkg/path/resource_path_test.go index 492dcb970..4f29d9c98 100644 --- a/src/pkg/path/resource_path_test.go +++ b/src/pkg/path/resource_path_test.go @@ -344,14 +344,13 @@ func (suite *DataLayerResourcePath) TestToServiceCategoryMetadataPath() { test.category.String(), }, "_"), func() { t := suite.T() - pb := path.Builder{}.Append(test.postfix...) - - p, err := pb.ToServiceCategoryMetadataPath( + p, err := path.BuildMetadata( tenant, user, test.service, test.category, - false) + false, + test.postfix...) test.check(t, err, clues.ToCore(err)) if err != nil {