## Description Code changed to support caching on the default folder of `exchange.Mail` as well as an independent node within the Inbox. <!-- Insert PR description--> ## Type of change - [x] 🌻 Feature ## Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * related to Issue #1004<issue> ## Test Plan - [x] ⚡ Unit test
45 lines
1.6 KiB
Go
45 lines
1.6 KiB
Go
package graph
|
|
|
|
import (
|
|
"context"
|
|
|
|
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
|
|
|
|
"github.com/alcionai/corso/src/pkg/account"
|
|
"github.com/alcionai/corso/src/pkg/path"
|
|
"github.com/alcionai/corso/src/pkg/selectors"
|
|
)
|
|
|
|
type QueryParams struct {
|
|
User string
|
|
Scope selectors.ExchangeScope
|
|
Credentials account.M365Config
|
|
FailFast bool
|
|
}
|
|
|
|
type Service interface {
|
|
// Client() returns msgraph Service client that can be used to process and execute
|
|
// the majority of the queries to the M365 Backstore
|
|
Client() *msgraphsdk.GraphServiceClient
|
|
// Adapter() returns GraphRequest adapter used to process large requests, create batches
|
|
// and page iterators
|
|
Adapter() *msgraphsdk.GraphRequestAdapter
|
|
// ErrPolicy returns if the service is implementing a Fast-Fail policy or not
|
|
ErrPolicy() bool
|
|
}
|
|
|
|
// ContainerResolver houses functions for getting information about containers
|
|
// from remote APIs (i.e. resolve folder paths with Graph API). Resolvers may
|
|
// cache information about containers.
|
|
type ContainerResolver interface {
|
|
// IDToPath takes an m365 container ID and converts it to a hierarchical path
|
|
// to that container. The path has a similar format to paths on the local
|
|
// file system.
|
|
IDToPath(ctx context.Context, m365ID string) (*path.Builder, error)
|
|
// Populate performs initialization steps for the resolver
|
|
// @param ctx is necessary param for Graph API tracing
|
|
// @param baseFolderID represents the M365ID base that the resolver will
|
|
// conclude its search. Default input is "".
|
|
Populate(ctx context.Context, baseFolderID string) error
|
|
}
|