diff --git a/changelog/unreleased/special-items-improvements.md b/changelog/unreleased/special-items-improvements.md new file mode 100644 index 00000000000..4a402d45dbb --- /dev/null +++ b/changelog/unreleased/special-items-improvements.md @@ -0,0 +1,5 @@ +Enhancement: Use storageID when requesting special items + +We need to use the storageID when requesting the special items of a space to spare a registry lookup and improve the performance + +https://github.com/owncloud/ocis/pull/4356 diff --git a/services/graph/pkg/service/v0/driveitems.go b/services/graph/pkg/service/v0/driveitems.go index e49c3b832d9..a789e1accdc 100644 --- a/services/graph/pkg/service/v0/driveitems.go +++ b/services/graph/pkg/service/v0/driveitems.go @@ -227,6 +227,8 @@ func (g Graph) GetExtendedSpaceProperties(ctx context.Context, baseURL *url.URL, for _, itemName := range names { if itemID, ok := metadata[itemName]; ok { rid, _ := storagespace.ParseID(string(itemID.Value)) + // add the storageID of the space, all drive items of this space belong to the same storageID + rid.StorageId = space.GetRoot().GetStorageId() spaceItem := g.getSpecialDriveItem(ctx, rid, itemName, baseURL, space) if spaceItem != nil { spaceItems = append(spaceItems, *spaceItem) @@ -244,12 +246,12 @@ func (g Graph) getSpecialDriveItem(ctx context.Context, id storageprovider.Resou spaceItem, err := g.getDriveItem(ctx, id) if err != nil { - g.logger.Error().Err(err).Str("ID", id.OpaqueId).Msg("Could not get readme Item") + g.logger.Error().Err(err).Str("ID", id.OpaqueId).Str("name", itemName).Msg("Could not get item info") return nil } itemPath, err := g.getPathForResource(ctx, id) if err != nil { - g.logger.Error().Err(err).Str("ID", id.OpaqueId).Msg("Could not get readme path") + g.logger.Error().Err(err).Str("ID", id.OpaqueId).Str("name", itemName).Msg("Could not get item path") return nil } spaceItem.SpecialFolder = &libregraph.SpecialFolder{Name: libregraph.PtrString(itemName)} diff --git a/services/graph/pkg/service/v0/drives.go b/services/graph/pkg/service/v0/drives.go index dfe702240a7..ca823ac8ef0 100644 --- a/services/graph/pkg/service/v0/drives.go +++ b/services/graph/pkg/service/v0/drives.go @@ -434,8 +434,7 @@ func (g Graph) ListStorageSpacesWithFilters(ctx context.Context, filters []*stor if err != nil { return nil, err } - - res, err := client.ListStorageSpaces(ctx, &storageprovider.ListStorageSpacesRequest{ + lReq := &storageprovider.ListStorageSpacesRequest{ Opaque: &types.Opaque{Map: map[string]*types.OpaqueEntry{ "permissions": { Decoder: "json", @@ -447,7 +446,8 @@ func (g Graph) ListStorageSpacesWithFilters(ctx context.Context, filters []*stor }, }}, Filters: filters, - }) + } + res, err := client.ListStorageSpaces(ctx, lReq) return res, err }