diff --git a/src/internal/m365/collection/drive/collections.go b/src/internal/m365/collection/drive/collections.go index cc94a118c..4b0d20084 100644 --- a/src/internal/m365/collection/drive/collections.go +++ b/src/internal/m365/collection/drive/collections.go @@ -298,7 +298,8 @@ func (c *Collections) Get( items, du, err := c.handler.EnumerateDriveItemsDelta( ictx, driveID, - prevDeltaLink) + prevDeltaLink, + api.DefaultDriveItemProps()) if err != nil { return nil, false, err } diff --git a/src/internal/m365/collection/drive/handlers.go b/src/internal/m365/collection/drive/handlers.go index 4e83bcc8f..9c803b93f 100644 --- a/src/internal/m365/collection/drive/handlers.go +++ b/src/internal/m365/collection/drive/handlers.go @@ -86,6 +86,7 @@ type EnumerateDriveItemsDeltaer interface { EnumerateDriveItemsDelta( ctx context.Context, driveID, prevDeltaLink string, + selectProps []string, ) ( []models.DriveItemable, api.DeltaUpdate, diff --git a/src/internal/m365/collection/drive/item_handler.go b/src/internal/m365/collection/drive/item_handler.go index a6e7d7c46..4804db187 100644 --- a/src/internal/m365/collection/drive/item_handler.go +++ b/src/internal/m365/collection/drive/item_handler.go @@ -137,8 +137,9 @@ func (h itemBackupHandler) IncludesDir(dir string) bool { func (h itemBackupHandler) EnumerateDriveItemsDelta( ctx context.Context, driveID, prevDeltaLink string, + selectProps []string, ) ([]models.DriveItemable, api.DeltaUpdate, error) { - return h.ac.EnumerateDriveItemsDelta(ctx, driveID, prevDeltaLink) + return h.ac.EnumerateDriveItemsDelta(ctx, driveID, prevDeltaLink, selectProps) } // --------------------------------------------------------------------------- diff --git a/src/internal/m365/collection/drive/library_handler.go b/src/internal/m365/collection/drive/library_handler.go index b9835dbb4..b64eaaee7 100644 --- a/src/internal/m365/collection/drive/library_handler.go +++ b/src/internal/m365/collection/drive/library_handler.go @@ -140,8 +140,9 @@ func (h libraryBackupHandler) IncludesDir(dir string) bool { func (h libraryBackupHandler) EnumerateDriveItemsDelta( ctx context.Context, driveID, prevDeltaLink string, + selectProps []string, ) ([]models.DriveItemable, api.DeltaUpdate, error) { - return h.ac.EnumerateDriveItemsDelta(ctx, driveID, prevDeltaLink) + return h.ac.EnumerateDriveItemsDelta(ctx, driveID, prevDeltaLink, selectProps) } // --------------------------------------------------------------------------- diff --git a/src/internal/m365/collection/drive/url_cache.go b/src/internal/m365/collection/drive/url_cache.go index ef78d48f5..391382dbe 100644 --- a/src/internal/m365/collection/drive/url_cache.go +++ b/src/internal/m365/collection/drive/url_cache.go @@ -12,6 +12,7 @@ import ( "github.com/alcionai/corso/src/internal/common/str" "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/logger" + "github.com/alcionai/corso/src/pkg/services/m365/api" ) const ( @@ -156,7 +157,11 @@ func (uc *urlCache) refreshCache( // Issue a delta query to graph logger.Ctx(ctx).Info("refreshing url cache") - items, du, err := uc.edid.EnumerateDriveItemsDelta(ctx, uc.driveID, uc.prevDelta) + items, du, err := uc.edid.EnumerateDriveItemsDelta( + ctx, + uc.driveID, + uc.prevDelta, + api.URLCacheDriveItemProps()) if err != nil { uc.idToProps = make(map[string]itemProps) return clues.Stack(err) diff --git a/src/internal/m365/collection/drive/url_cache_test.go b/src/internal/m365/collection/drive/url_cache_test.go index c8e23864f..4fa0043fb 100644 --- a/src/internal/m365/collection/drive/url_cache_test.go +++ b/src/internal/m365/collection/drive/url_cache_test.go @@ -97,7 +97,11 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() { nfid := ptr.Val(newFolder.GetId()) // Get the previous delta to feed into url cache - _, du, err := ac.EnumerateDriveItemsDelta(ctx, suite.driveID, "") + _, du, err := ac.EnumerateDriveItemsDelta( + ctx, + suite.driveID, + "", + api.URLCacheDriveItemProps()) require.NoError(t, err, clues.ToCore(err)) require.NotEmpty(t, du.URL) diff --git a/src/internal/m365/service/onedrive/mock/handlers.go b/src/internal/m365/service/onedrive/mock/handlers.go index 6678e4c57..568644d98 100644 --- a/src/internal/m365/service/onedrive/mock/handlers.go +++ b/src/internal/m365/service/onedrive/mock/handlers.go @@ -163,8 +163,13 @@ func (h *BackupHandler) Get(context.Context, string, map[string]string) (*http.R func (h BackupHandler) EnumerateDriveItemsDelta( ctx context.Context, driveID, prevDeltaLink string, + selectProps []string, ) ([]models.DriveItemable, api.DeltaUpdate, error) { - return h.DriveItemEnumeration.EnumerateDriveItemsDelta(ctx, driveID, prevDeltaLink) + return h.DriveItemEnumeration.EnumerateDriveItemsDelta( + ctx, + driveID, + prevDeltaLink, + selectProps) } func (h BackupHandler) GetItem(ctx context.Context, _, _ string) (models.DriveItemable, error) { @@ -282,6 +287,7 @@ type EnumeratesDriveItemsDelta struct { func (edi EnumeratesDriveItemsDelta) EnumerateDriveItemsDelta( _ context.Context, driveID, _ string, + _ []string, ) ( []models.DriveItemable, api.DeltaUpdate, diff --git a/src/pkg/services/m365/api/config.go b/src/pkg/services/m365/api/config.go index 8a5be9d23..96d59da2c 100644 --- a/src/pkg/services/m365/api/config.go +++ b/src/pkg/services/m365/api/config.go @@ -120,8 +120,8 @@ func DefaultDriveItemProps() []string { "shared") } -// URL cache only needs a subset of item properties -func DriveItemSelectURLCache() []string { +// URL cache only needs to fetch a small subset of item properties +func URLCacheDriveItemProps() []string { return idAnd( "content.downloadUrl", "deleted", diff --git a/src/pkg/services/m365/api/drive_pager.go b/src/pkg/services/m365/api/drive_pager.go index e5523d35f..2a9527712 100644 --- a/src/pkg/services/m365/api/drive_pager.go +++ b/src/pkg/services/m365/api/drive_pager.go @@ -203,12 +203,13 @@ func (c Drives) EnumerateDriveItemsDelta( ctx context.Context, driveID string, prevDeltaLink string, + selectProps []string, ) ( []models.DriveItemable, DeltaUpdate, error, ) { - pager := c.newDriveItemDeltaPager(driveID, prevDeltaLink, DefaultDriveItemProps()...) + pager := c.newDriveItemDeltaPager(driveID, prevDeltaLink, selectProps...) items, du, err := deltaEnumerateItems[models.DriveItemable](ctx, pager, prevDeltaLink) if err != nil { diff --git a/src/pkg/services/m365/api/drive_pager_test.go b/src/pkg/services/m365/api/drive_pager_test.go index b75c3d320..fad440ee0 100644 --- a/src/pkg/services/m365/api/drive_pager_test.go +++ b/src/pkg/services/m365/api/drive_pager_test.go @@ -188,7 +188,7 @@ func (suite *DrivePagerIntgSuite) TestEnumerateDriveItems() { items, du, err := suite.its. ac. Drives(). - EnumerateDriveItemsDelta(ctx, suite.its.user.driveID, "") + EnumerateDriveItemsDelta(ctx, suite.its.user.driveID, "", api.DefaultDriveItemProps()) require.NoError(t, err, clues.ToCore(err)) require.NotEmpty(t, items, "no items found in user's drive") assert.NotEmpty(t, du.URL, "should have a delta link")