## Description Fulfills the data collection interfaces to provide item deleted flags and collection state enums. A note on the additional data consumption: I'm making an assumption that the @removed property will appear in that map. This is awaiting testing for verification, which I'll get into as a follow-up step. ## Does this PR need a docs update or release note? - [x] ⛔ No ## Type of change - [x] 🌻 Feature ## Issue(s) * #1727 ## Test Plan - [x] ❓ In a follow-up PR
105 lines
3.1 KiB
Go
105 lines
3.1 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"
|
|
)
|
|
|
|
// AllMetadataFileNames produces the standard set of filenames used to store graph
|
|
// metadata such as delta tokens and folderID->path references.
|
|
func AllMetadataFileNames() []string {
|
|
return []string{DeltaURLsFileName, PreviousPathFileName}
|
|
}
|
|
|
|
type QueryParams struct {
|
|
Category path.CategoryType
|
|
ResourceOwner string
|
|
Credentials account.M365Config
|
|
}
|
|
|
|
var _ Servicer = &Service{}
|
|
|
|
type Service struct {
|
|
adapter *msgraphsdk.GraphRequestAdapter
|
|
client *msgraphsdk.GraphServiceClient
|
|
}
|
|
|
|
func NewService(adapter *msgraphsdk.GraphRequestAdapter) *Service {
|
|
return &Service{
|
|
adapter: adapter,
|
|
client: msgraphsdk.NewGraphServiceClient(adapter),
|
|
}
|
|
}
|
|
|
|
func (s Service) Adapter() *msgraphsdk.GraphRequestAdapter {
|
|
return s.adapter
|
|
}
|
|
|
|
func (s Service) Client() *msgraphsdk.GraphServiceClient {
|
|
return s.client
|
|
}
|
|
|
|
type Servicer 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
|
|
}
|
|
|
|
// Idable represents objects that implement msgraph-sdk-go/models.entityable
|
|
// and have the concept of an ID.
|
|
type Idable interface {
|
|
GetId() *string
|
|
}
|
|
|
|
// Descendable represents objects that implement msgraph-sdk-go/models.entityable
|
|
// and have the concept of a "parent folder".
|
|
type Descendable interface {
|
|
Idable
|
|
GetParentFolderId() *string
|
|
}
|
|
|
|
// Displayable represents objects that implement msgraph-sdk-go/models.entityable
|
|
// and have the concept of a display name.
|
|
type Displayable interface {
|
|
Idable
|
|
GetDisplayName() *string
|
|
}
|
|
|
|
type Container interface {
|
|
Descendable
|
|
Displayable
|
|
}
|
|
|
|
// 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, baseContainerPather ...string) error
|
|
|
|
// PathInCache performs a look up of a path reprensentation
|
|
// and returns the m365ID of directory iff the pathString
|
|
// matches the path of a container within the cache.
|
|
// @returns bool represents if m365ID was found.
|
|
PathInCache(pathString string) (string, bool)
|
|
|
|
AddToCache(ctx context.Context, m365Container Container) error
|
|
|
|
// Items returns the containers in the cache.
|
|
Items() []CachedContainer
|
|
}
|