diff --git a/src/internal/kopia/wrapper_test.go b/src/internal/kopia/wrapper_test.go index 32591e2f5..5c03fe508 100644 --- a/src/internal/kopia/wrapper_test.go +++ b/src/internal/kopia/wrapper_test.go @@ -27,7 +27,6 @@ import ( strTD "github.com/alcionai/corso/src/internal/common/str/testdata" "github.com/alcionai/corso/src/internal/data" dataMock "github.com/alcionai/corso/src/internal/data/mock" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" exchMock "github.com/alcionai/corso/src/internal/m365/service/exchange/mock" istats "github.com/alcionai/corso/src/internal/stats" "github.com/alcionai/corso/src/internal/tester" @@ -38,6 +37,7 @@ import ( "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/logger" "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" storeTD "github.com/alcionai/corso/src/pkg/storage/testdata" ) diff --git a/src/internal/m365/collection/drive/collection.go b/src/internal/m365/collection/drive/collection.go index aa196281a..7ef897fed 100644 --- a/src/internal/m365/collection/drive/collection.go +++ b/src/internal/m365/collection/drive/collection.go @@ -16,7 +16,6 @@ import ( "github.com/alcionai/corso/src/internal/common/idname" "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/data" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/internal/m365/support" "github.com/alcionai/corso/src/internal/observe" "github.com/alcionai/corso/src/pkg/backup/details" @@ -29,6 +28,7 @@ import ( "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/services/m365/api" "github.com/alcionai/corso/src/pkg/services/m365/api/graph" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" "github.com/alcionai/corso/src/pkg/services/m365/custom" ) diff --git a/src/internal/m365/collection/drive/collection_test.go b/src/internal/m365/collection/drive/collection_test.go index 6f1043c31..ed4d72151 100644 --- a/src/internal/m365/collection/drive/collection_test.go +++ b/src/internal/m365/collection/drive/collection_test.go @@ -21,7 +21,7 @@ import ( "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/common/readers" "github.com/alcionai/corso/src/internal/data" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" + odmetadata "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" metaTD "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata/testdata" odTD "github.com/alcionai/corso/src/internal/m365/service/onedrive/testdata" "github.com/alcionai/corso/src/internal/m365/support" @@ -34,6 +34,7 @@ import ( "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/services/m365/api/graph" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" "github.com/alcionai/corso/src/pkg/services/m365/custom" ) @@ -73,13 +74,13 @@ func (suite *CollectionUnitSuite) TestCollection() { stubMetaID = "testMetaID" stubMetaEntityID = "email@provider.com" stubMetaRoles = []string{"read", "write"} - stubMeta = metadata.Metadata{ + stubMeta = odmetadata.Metadata{ FileName: stubItemName, - Permissions: []metadata.Permission{ + Permissions: []odmetadata.Permission{ { ID: stubMetaID, EntityID: stubMetaEntityID, - EntityType: metadata.GV2User, + EntityType: odmetadata.GV2User, Roles: stubMetaRoles, Expiration: &now, }, @@ -208,7 +209,7 @@ func (suite *CollectionUnitSuite) TestCollection() { mbh.GetErrs = []error{test.getErr} mbh.GI = getsItem{Err: assert.AnError} - pcr := metaTD.NewStubPermissionResponse(metadata.GV2User, stubMetaID, stubMetaEntityID, stubMetaRoles) + pcr := metaTD.NewStubPermissionResponse(odmetadata.GV2User, stubMetaID, stubMetaEntityID, stubMetaRoles) mbh.GIP = getsItemPermission{Perm: pcr} coll, err := NewCollection( @@ -294,7 +295,7 @@ func (suite *CollectionUnitSuite) TestCollection() { assert.Equal(t, readers.DefaultSerializationVersion, rr.Format().Version) assert.False(t, rr.Format().DelInFlight) - readMeta := metadata.Metadata{} + readMeta := odmetadata.Metadata{} err = json.NewDecoder(rr).Decode(&readMeta) require.NoError(t, err, clues.ToCore(err)) diff --git a/src/internal/m365/collection/drive/collections.go b/src/internal/m365/collection/drive/collections.go index b4d11381a..c713041e2 100644 --- a/src/internal/m365/collection/drive/collections.go +++ b/src/internal/m365/collection/drive/collections.go @@ -14,7 +14,6 @@ import ( "github.com/alcionai/corso/src/internal/common/prefixmatcher" "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/data" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" odConsts "github.com/alcionai/corso/src/internal/m365/service/onedrive/consts" "github.com/alcionai/corso/src/internal/m365/support" bupMD "github.com/alcionai/corso/src/pkg/backup/metadata" @@ -26,6 +25,7 @@ import ( "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/services/m365/api" "github.com/alcionai/corso/src/pkg/services/m365/api/graph" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" "github.com/alcionai/corso/src/pkg/services/m365/api/pagers" "github.com/alcionai/corso/src/pkg/services/m365/custom" ) diff --git a/src/internal/m365/collection/drive/delta_tree.go b/src/internal/m365/collection/drive/delta_tree.go index 2eac6d3e9..38e6b6b95 100644 --- a/src/internal/m365/collection/drive/delta_tree.go +++ b/src/internal/m365/collection/drive/delta_tree.go @@ -9,9 +9,9 @@ import ( "golang.org/x/exp/maps" "github.com/alcionai/corso/src/internal/common/ptr" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/pkg/logger" "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" "github.com/alcionai/corso/src/pkg/services/m365/custom" ) diff --git a/src/internal/m365/collection/drive/export.go b/src/internal/m365/collection/drive/export.go index 956c4e9b3..911d65f51 100644 --- a/src/internal/m365/collection/drive/export.go +++ b/src/internal/m365/collection/drive/export.go @@ -7,13 +7,13 @@ import ( "github.com/alcionai/clues" "github.com/alcionai/corso/src/internal/data" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/internal/version" "github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/export" "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/metrics" "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) func NewExportCollection( diff --git a/src/internal/m365/collection/drive/export_test.go b/src/internal/m365/collection/drive/export_test.go index 1b6b23261..f2d74d648 100644 --- a/src/internal/m365/collection/drive/export_test.go +++ b/src/internal/m365/collection/drive/export_test.go @@ -12,9 +12,9 @@ import ( "github.com/alcionai/corso/src/internal/data" dataMock "github.com/alcionai/corso/src/internal/data/mock" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/internal/tester" "github.com/alcionai/corso/src/internal/version" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) type ExportUnitSuite struct { diff --git a/src/internal/m365/collection/drive/helper_test.go b/src/internal/m365/collection/drive/helper_test.go index 2adc143e9..d00a5edf4 100644 --- a/src/internal/m365/collection/drive/helper_test.go +++ b/src/internal/m365/collection/drive/helper_test.go @@ -19,7 +19,6 @@ import ( "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/data" dataMock "github.com/alcionai/corso/src/internal/data/mock" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" odConsts "github.com/alcionai/corso/src/internal/m365/service/onedrive/consts" "github.com/alcionai/corso/src/internal/m365/support" "github.com/alcionai/corso/src/internal/tester" @@ -34,6 +33,7 @@ import ( "github.com/alcionai/corso/src/pkg/selectors" "github.com/alcionai/corso/src/pkg/services/m365/api" "github.com/alcionai/corso/src/pkg/services/m365/api/graph" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" apiMock "github.com/alcionai/corso/src/pkg/services/m365/api/mock" "github.com/alcionai/corso/src/pkg/services/m365/api/pagers" "github.com/alcionai/corso/src/pkg/services/m365/custom" diff --git a/src/internal/m365/collection/drive/permission.go b/src/internal/m365/collection/drive/permission.go index d9ea991e8..1847a062d 100644 --- a/src/internal/m365/collection/drive/permission.go +++ b/src/internal/m365/collection/drive/permission.go @@ -10,12 +10,13 @@ import ( "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/common/syncd" "github.com/alcionai/corso/src/internal/data" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" + odmetadata "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/internal/version" "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/logger" "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/services/m365/api/graph" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) // empty string is used to indicate that a permission cannot be restored @@ -23,20 +24,20 @@ const nonRestorablePermission = "" func getParentMetadata( parentPath path.Path, - parentDirToMeta syncd.MapTo[metadata.Metadata], -) (metadata.Metadata, error) { + parentDirToMeta syncd.MapTo[odmetadata.Metadata], +) (odmetadata.Metadata, error) { parentMeta, ok := parentDirToMeta.Load(parentPath.String()) if !ok { drivePath, err := path.ToDrivePath(parentPath) if err != nil { - return metadata.Metadata{}, clues.Wrap(err, "invalid restore path") + return odmetadata.Metadata{}, clues.Wrap(err, "invalid restore path") } if len(drivePath.Folders) != 0 { - return metadata.Metadata{}, clues.Wrap(err, "computing item permissions") + return odmetadata.Metadata{}, clues.Wrap(err, "computing item permissions") } - parentMeta = metadata.Metadata{} + parentMeta = odmetadata.Metadata{} } return parentMeta, nil @@ -49,9 +50,9 @@ func getCollectionMetadata( caches *restoreCaches, backupVersion int, restorePerms bool, -) (metadata.Metadata, error) { +) (odmetadata.Metadata, error) { if !restorePerms || backupVersion < version.OneDrive1DataAndMetaFiles { - return metadata.Metadata{}, nil + return odmetadata.Metadata{}, nil } var ( @@ -61,13 +62,13 @@ func getCollectionMetadata( if len(drivePath.Folders) == 0 { // No permissions for root folder - return metadata.Metadata{}, nil + return odmetadata.Metadata{}, nil } if backupVersion < version.OneDrive4DirIncludesPermissions { colMeta, err := getParentMetadata(fullPath, caches.ParentDirToMeta) if err != nil { - return metadata.Metadata{}, clues.Wrap(err, "collection metadata") + return odmetadata.Metadata{}, clues.Wrap(err, "collection metadata") } return colMeta, nil @@ -82,7 +83,7 @@ func getCollectionMetadata( meta, err := FetchAndReadMetadata(ctx, dc, metaName) if err != nil { - return metadata.Metadata{}, clues.Wrap(err, "collection metadata") + return odmetadata.Metadata{}, clues.Wrap(err, "collection metadata") } return meta, nil @@ -93,9 +94,9 @@ func getCollectionMetadata( func computePreviousLinkShares( ctx context.Context, originDir path.Path, - parentMetas syncd.MapTo[metadata.Metadata], -) ([]metadata.LinkShare, error) { - linkShares := []metadata.LinkShare{} + parentMetas syncd.MapTo[odmetadata.Metadata], +) ([]odmetadata.LinkShare, error) { + linkShares := []odmetadata.LinkShare{} ctx = clues.Add(ctx, "origin_dir", originDir) parent, err := originDir.Dir() @@ -122,7 +123,7 @@ func computePreviousLinkShares( // Any change in permissions would change it to custom // permission set and so we can filter on that. - if meta.SharingMode == metadata.SharingModeCustom { + if meta.SharingMode == odmetadata.SharingModeCustom { linkShares = append(linkShares, meta.LinkShares...) } @@ -143,11 +144,11 @@ func computePreviousMetadata( ctx context.Context, originDir path.Path, // map parent dir -> parent's metadata - parentMetas syncd.MapTo[metadata.Metadata], -) (metadata.Metadata, error) { + parentMetas syncd.MapTo[odmetadata.Metadata], +) (odmetadata.Metadata, error) { var ( parent path.Path - meta metadata.Metadata + meta odmetadata.Metadata err error ok bool @@ -158,26 +159,26 @@ func computePreviousMetadata( for { parent, err = parent.Dir() if err != nil { - return metadata.Metadata{}, clues.WrapWC(ctx, err, "getting parent") + return odmetadata.Metadata{}, clues.WrapWC(ctx, err, "getting parent") } ictx := clues.Add(ctx, "parent_dir", parent) drivePath, err := path.ToDrivePath(parent) if err != nil { - return metadata.Metadata{}, clues.WrapWC(ictx, err, "transforming dir to drivePath") + return odmetadata.Metadata{}, clues.WrapWC(ictx, err, "transforming dir to drivePath") } if len(drivePath.Folders) == 0 { - return metadata.Metadata{}, nil + return odmetadata.Metadata{}, nil } meta, ok = parentMetas.Load(parent.String()) if !ok { - return metadata.Metadata{}, clues.NewWC(ictx, "no metadata found for parent folder: "+parent.String()) + return odmetadata.Metadata{}, clues.NewWC(ictx, "no metadata found for parent folder: "+parent.String()) } - if meta.SharingMode == metadata.SharingModeCustom { + if meta.SharingMode == odmetadata.SharingModeCustom { return meta, nil } } @@ -195,7 +196,7 @@ func UpdatePermissions( udip updateDeleteItemPermissioner, driveID string, itemID string, - permAdded, permRemoved []metadata.Permission, + permAdded, permRemoved []odmetadata.Permission, oldPermIDToNewID syncd.MapTo[string], errs *fault.Bus, ) error { @@ -260,7 +261,7 @@ func UpdatePermissions( // TODO: sitegroup support. Currently errors with "One or more users could not be resolved", // likely due to the site group entityID consisting of a single integer (ex: 4) - if len(roles) == 0 || p.EntityType == metadata.GV2SiteGroup { + if len(roles) == 0 || p.EntityType == odmetadata.GV2SiteGroup { continue } @@ -315,7 +316,7 @@ func UpdateLinkShares( upils updateDeleteItemLinkSharer, driveID string, itemID string, - lsAdded, lsRemoved []metadata.LinkShare, + lsAdded, lsRemoved []odmetadata.LinkShare, oldLinkShareIDToNewID syncd.MapTo[string], errs *fault.Bus, ) (bool, error) { @@ -347,7 +348,7 @@ func UpdateLinkShares( for _, iden := range ls.Entities { // TODO: sitegroup support. Currently errors with "One or more users could not be resolved", // likely due to the site group entityID consisting of a single integer (ex: 4) - if iden.EntityType == metadata.GV2SiteGroup { + if iden.EntityType == odmetadata.GV2SiteGroup { continue } @@ -457,11 +458,11 @@ func UpdateLinkShares( func filterUnavailableEntitiesInLinkShare( ctx context.Context, - linkShares []metadata.LinkShare, + linkShares []odmetadata.LinkShare, availableEntities ResourceIDNames, oldLinkShareIDToNewID syncd.MapTo[string], -) []metadata.LinkShare { - filtered := []metadata.LinkShare{} +) []odmetadata.LinkShare { + filtered := []odmetadata.LinkShare{} if availableEntities.Users == nil || availableEntities.Groups == nil { // This should not be happening unless we missed to fill in the caches @@ -470,20 +471,20 @@ func filterUnavailableEntitiesInLinkShare( } for _, p := range linkShares { - entities := []metadata.Entity{} + entities := []odmetadata.Entity{} for _, e := range p.Entities { available := false switch e.EntityType { - case metadata.GV2User: + case odmetadata.GV2User: // Link shares with external users won't have IDs if len(e.ID) == 0 && len(e.Email) > 0 { available = true } else { _, available = availableEntities.Users.NameOf(e.ID) } - case metadata.GV2Group: + case odmetadata.GV2Group: _, available = availableEntities.Groups.NameOf(e.ID) default: // We only know about users and groups @@ -513,26 +514,26 @@ func filterUnavailableEntitiesInLinkShare( func filterUnavailableEntitiesInPermissions( ctx context.Context, - perms []metadata.Permission, + perms []odmetadata.Permission, availableEntities ResourceIDNames, oldPermIDToNewID syncd.MapTo[string], -) []metadata.Permission { +) []odmetadata.Permission { if availableEntities.Users == nil || availableEntities.Groups == nil { // This should not be happening unless we missed to fill in the caches logger.Ctx(ctx).Info("no available entities, not filtering link shares") return perms } - filtered := []metadata.Permission{} + filtered := []odmetadata.Permission{} for _, p := range perms { available := false switch p.EntityType { - case metadata.GV2User: + case odmetadata.GV2User: _, ok := availableEntities.Users.NameOf(p.EntityID) available = available || ok - case metadata.GV2Group: + case odmetadata.GV2Group: _, ok := availableEntities.Groups.NameOf(p.EntityID) available = available || ok default: @@ -564,11 +565,11 @@ func RestorePermissions( driveID string, itemID string, itemPath path.Path, - current metadata.Metadata, + current odmetadata.Metadata, caches *restoreCaches, errs *fault.Bus, ) { - if current.SharingMode == metadata.SharingModeInherited { + if current.SharingMode == odmetadata.SharingModeInherited { return } @@ -582,7 +583,7 @@ func RestorePermissions( } if previousLinkShares != nil { - lsAdded, lsRemoved := metadata.DiffLinkShares(previousLinkShares, current.LinkShares) + lsAdded, lsRemoved := odmetadata.DiffLinkShares(previousLinkShares, current.LinkShares) lsAdded = filterUnavailableEntitiesInLinkShare(ctx, lsAdded, caches.AvailableEntities, caches.OldLinkShareIDToNewID) // Link shares have to be updated before permissions as we have to @@ -608,7 +609,7 @@ func RestorePermissions( return } - permAdded, permRemoved := metadata.DiffPermissions(previous.Permissions, current.Permissions) + permAdded, permRemoved := odmetadata.DiffPermissions(previous.Permissions, current.Permissions) permAdded = filterUnavailableEntitiesInPermissions(ctx, permAdded, caches.AvailableEntities, caches.OldPermIDToNewID) if didReset { @@ -617,7 +618,7 @@ func RestorePermissions( // that an item has as they too will be removed. logger.Ctx(ctx).Debug("link share creation reset all inherited permissions") - permRemoved = []metadata.Permission{} + permRemoved = []odmetadata.Permission{} permAdded = current.Permissions } diff --git a/src/internal/m365/collection/drive/restore.go b/src/internal/m365/collection/drive/restore.go index 626ed5a85..4f88928b1 100644 --- a/src/internal/m365/collection/drive/restore.go +++ b/src/internal/m365/collection/drive/restore.go @@ -17,7 +17,7 @@ import ( "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/data" "github.com/alcionai/corso/src/internal/diagnostics" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" + odmetadata "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/internal/m365/support" "github.com/alcionai/corso/src/internal/observe" "github.com/alcionai/corso/src/internal/operations/inject" @@ -31,6 +31,7 @@ import ( "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/services/m365/api" "github.com/alcionai/corso/src/pkg/services/m365/api/graph" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" "github.com/alcionai/corso/src/pkg/services/m365/custom" ) @@ -552,7 +553,7 @@ func CreateRestoreFolders( drivePath *path.DrivePath, restoreDir *path.Builder, folderPath path.Path, - folderMetadata metadata.Metadata, + folderMetadata odmetadata.Metadata, caches *restoreCaches, restorePerms bool, errs *fault.Bus, @@ -876,12 +877,12 @@ func FetchAndReadMetadata( ctx context.Context, fibn data.FetchItemByNamer, metaName string, -) (metadata.Metadata, error) { +) (odmetadata.Metadata, error) { ctx = clues.Add(ctx, "meta_file_name", metaName) metaFile, err := fibn.FetchItemByName(ctx, metaName) if err != nil { - return metadata.Metadata{}, clues.Wrap(err, "getting item metadata") + return odmetadata.Metadata{}, clues.Wrap(err, "getting item metadata") } metaReader := metaFile.ToReader() @@ -889,25 +890,25 @@ func FetchAndReadMetadata( meta, err := getMetadata(metaReader) if err != nil { - return metadata.Metadata{}, clues.Wrap(err, "deserializing item metadata") + return odmetadata.Metadata{}, clues.Wrap(err, "deserializing item metadata") } return meta, nil } // getMetadata read and parses the metadata info for an item -func getMetadata(metar io.ReadCloser) (metadata.Metadata, error) { - var meta metadata.Metadata +func getMetadata(metar io.ReadCloser) (odmetadata.Metadata, error) { + var meta odmetadata.Metadata // `metar` will be nil for the top level container folder if metar != nil { metaraw, err := io.ReadAll(metar) if err != nil { - return metadata.Metadata{}, err + return odmetadata.Metadata{}, err } err = json.Unmarshal(metaraw, &meta) if err != nil { - return metadata.Metadata{}, err + return odmetadata.Metadata{}, err } } diff --git a/src/internal/m365/helper_test.go b/src/internal/m365/helper_test.go index 48bf2f5d9..8734a5163 100644 --- a/src/internal/m365/helper_test.go +++ b/src/internal/m365/helper_test.go @@ -18,7 +18,7 @@ import ( "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/common/readers" "github.com/alcionai/corso/src/internal/data" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" + odmetadata "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" odStub "github.com/alcionai/corso/src/internal/m365/service/onedrive/stub" m365Stub "github.com/alcionai/corso/src/internal/m365/stub" "github.com/alcionai/corso/src/internal/tester" @@ -29,6 +29,7 @@ import ( "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/selectors" "github.com/alcionai/corso/src/pkg/services/m365/api" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) func testElementsMatch[T any]( @@ -693,7 +694,7 @@ func compareExchangeEvent( checkEvent(t, expectedEvent, itemEvent) } -func permissionEqual(expected metadata.Permission, got metadata.Permission) bool { +func permissionEqual(expected odmetadata.Permission, got odmetadata.Permission) bool { if !strings.EqualFold(expected.Email, got.Email) { return false } @@ -722,7 +723,7 @@ func permissionEqual(expected metadata.Permission, got metadata.Permission) bool return true } -func linkSharesEqual(expected metadata.LinkShare, got metadata.LinkShare) bool { +func linkSharesEqual(expected odmetadata.LinkShare, got odmetadata.LinkShare) bool { if !strings.EqualFold(expected.Link.Scope, got.Link.Scope) { return false } @@ -815,8 +816,8 @@ func compareDriveItem( if isMeta { var ( - itemMeta metadata.Metadata - expectedMeta metadata.Metadata + itemMeta odmetadata.Metadata + expectedMeta odmetadata.Metadata ) err = json.Unmarshal(buf, &itemMeta) @@ -859,7 +860,7 @@ func compareDriveItem( assert.Equal(t, expectedMeta.SharingMode, itemMeta.SharingMode, "sharing mode") // We cannot restore owner permissions, so skip checking them - itemPerms := []metadata.Permission{} + itemPerms := []odmetadata.Permission{} for _, p := range itemMeta.Permissions { if p.Roles[0] != "owner" { diff --git a/src/internal/m365/service/onedrive/stub/stub.go b/src/internal/m365/service/onedrive/stub/stub.go index 3a1f3d3ab..478712da6 100644 --- a/src/internal/m365/service/onedrive/stub/stub.go +++ b/src/internal/m365/service/onedrive/stub/stub.go @@ -8,41 +8,42 @@ import ( "github.com/alcionai/clues" "github.com/google/uuid" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" + odmetadata "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" odConsts "github.com/alcionai/corso/src/internal/m365/service/onedrive/consts" m365Stub "github.com/alcionai/corso/src/internal/m365/stub" "github.com/alcionai/corso/src/internal/version" "github.com/alcionai/corso/src/pkg/backup/details" "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) // For any version post this(inclusive), we expect to be using IDs for // permission instead of email const versionPermissionSwitchedToID = version.OneDrive4DirIncludesPermissions -func getMetadata(fileName string, meta MetaData, permUseID bool) metadata.Metadata { - if meta.SharingMode != metadata.SharingModeCustom { - return metadata.Metadata{ +func getMetadata(fileName string, meta MetaData, permUseID bool) odmetadata.Metadata { + if meta.SharingMode != odmetadata.SharingModeCustom { + return odmetadata.Metadata{ FileName: fileName, SharingMode: meta.SharingMode, } } - testMeta := metadata.Metadata{FileName: fileName} + testMeta := odmetadata.Metadata{FileName: fileName} if len(meta.Perms.User) != 0 { // In case of permissions, the id will usually be same for same // user/role combo unless deleted and readded, but we have to do // this as we only have two users of which one is already taken. id := uuid.NewString() - uperm := metadata.Permission{ID: id, Roles: meta.Perms.Roles} + uperm := odmetadata.Permission{ID: id, Roles: meta.Perms.Roles} uperm.Email = meta.Perms.User if permUseID { uperm.EntityID = meta.Perms.EntityID } - testMeta.Permissions = []metadata.Permission{uperm} + testMeta.Permissions = []odmetadata.Permission{uperm} } if len(meta.LinkShares) != 0 { @@ -61,9 +62,9 @@ func getMetadata(fileName string, meta MetaData, permUseID bool) metadata.Metada roles = []string{"read"} } - ls := metadata.LinkShare{ + ls := odmetadata.LinkShare{ ID: id, // id is required for mapping from parent - Link: metadata.LinkShareLink{ + Link: odmetadata.LinkShareLink{ Scope: ls.Scope, Type: ls.Type, WebURL: id, @@ -86,13 +87,13 @@ type PermData struct { } type LinkShareData struct { - Entities []metadata.Entity + Entities []odmetadata.Entity Scope string Type string } type MetaData struct { - SharingMode metadata.SharingMode + SharingMode odmetadata.SharingMode Perms PermData LinkShares []LinkShareData } diff --git a/src/internal/m365/stub/stub.go b/src/internal/m365/stub/stub.go index b0c0104a1..e86655d5c 100644 --- a/src/internal/m365/stub/stub.go +++ b/src/internal/m365/stub/stub.go @@ -9,10 +9,10 @@ import ( "github.com/alcionai/corso/src/internal/data" dataMock "github.com/alcionai/corso/src/internal/data/mock" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" exchMock "github.com/alcionai/corso/src/internal/m365/service/exchange/mock" "github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) type ColInfo struct { diff --git a/src/pkg/backup/details/details.go b/src/pkg/backup/details/details.go index ab2b57191..7f7c4147e 100644 --- a/src/pkg/backup/details/details.go +++ b/src/pkg/backup/details/details.go @@ -7,8 +7,8 @@ import ( "github.com/alcionai/clues" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) // Max number of items for which we will print details. If there are diff --git a/src/pkg/backup/details/details_test.go b/src/pkg/backup/details/details_test.go index 957207ebc..9c5dc4880 100644 --- a/src/pkg/backup/details/details_test.go +++ b/src/pkg/backup/details/details_test.go @@ -13,12 +13,12 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" odConsts "github.com/alcionai/corso/src/internal/m365/service/onedrive/consts" "github.com/alcionai/corso/src/internal/tester" "github.com/alcionai/corso/src/internal/version" "github.com/alcionai/corso/src/pkg/dttm" "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" ) // ------------------------------------------------------------ diff --git a/src/pkg/repository/backups.go b/src/pkg/repository/backups.go index 5e70db133..b358500f9 100644 --- a/src/pkg/repository/backups.go +++ b/src/pkg/repository/backups.go @@ -10,7 +10,6 @@ import ( "github.com/alcionai/corso/src/internal/common/idname" "github.com/alcionai/corso/src/internal/data" "github.com/alcionai/corso/src/internal/kopia" - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/internal/model" "github.com/alcionai/corso/src/internal/operations" "github.com/alcionai/corso/src/internal/streamstore" @@ -19,6 +18,7 @@ import ( "github.com/alcionai/corso/src/pkg/backup/details" "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/selectors" + "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" "github.com/alcionai/corso/src/pkg/store" ) diff --git a/src/internal/m365/collection/drive/metadata/consts.go b/src/pkg/services/m365/api/graph/metadata/consts.go similarity index 100% rename from src/internal/m365/collection/drive/metadata/consts.go rename to src/pkg/services/m365/api/graph/metadata/consts.go diff --git a/src/pkg/services/m365/api/graph/metadata/metadata.go b/src/pkg/services/m365/api/graph/metadata/metadata.go index f85606587..843e1203b 100644 --- a/src/pkg/services/m365/api/graph/metadata/metadata.go +++ b/src/pkg/services/m365/api/graph/metadata/metadata.go @@ -1,17 +1,16 @@ package metadata import ( - "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/pkg/path" ) func IsMetadataFile(p path.Path) bool { switch p.Service() { case path.OneDriveService: - return metadata.HasMetaSuffix(p.Item()) + return HasMetaSuffix(p.Item()) case path.SharePointService, path.GroupsService: - return p.Category() == path.LibrariesCategory && metadata.HasMetaSuffix(p.Item()) + return p.Category() == path.LibrariesCategory && HasMetaSuffix(p.Item()) default: return false diff --git a/src/pkg/services/m365/api/graph/metadata/metadata_test.go b/src/pkg/services/m365/api/graph/metadata/metadata_test.go index 7fa8e71a0..775a6d446 100644 --- a/src/pkg/services/m365/api/graph/metadata/metadata_test.go +++ b/src/pkg/services/m365/api/graph/metadata/metadata_test.go @@ -9,7 +9,6 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - odmetadata "github.com/alcionai/corso/src/internal/m365/collection/drive/metadata" "github.com/alcionai/corso/src/internal/tester" "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/services/m365/api/graph/metadata" @@ -29,12 +28,12 @@ var ( notMetaSuffixes = []string{ "", - odmetadata.DataFileSuffix, + metadata.DataFileSuffix, } metaSuffixes = []string{ - odmetadata.MetaFileSuffix, - odmetadata.DirMetaFileSuffix, + metadata.MetaFileSuffix, + metadata.DirMetaFileSuffix, } cases = []testCase{