Keepers 62daf10213
migrate onedrive using prefix collection (#3122)
#### Does this PR need a docs update or release note?

- [x] 🕐 Yes, but in a later PR

#### Type of change

- [x] 🌻 Feature

#### Issue(s)

* #2825

#### Test Plan

- [x] 💪 Manual
- [x]  Unit test
- [x] 💚 E2E
2023-04-24 17:36:10 +00:00

61 lines
1.3 KiB
Go

package operations
import (
"context"
"github.com/alcionai/clues"
"github.com/alcionai/corso/src/internal/model"
"github.com/alcionai/corso/src/internal/streamstore"
"github.com/alcionai/corso/src/pkg/backup"
"github.com/alcionai/corso/src/pkg/backup/details"
"github.com/alcionai/corso/src/pkg/fault"
"github.com/alcionai/corso/src/pkg/store"
)
func getBackupFromID(
ctx context.Context,
backupID model.StableID,
ms *store.Wrapper,
) (*backup.Backup, error) {
bup, err := ms.GetBackup(ctx, backupID)
if err != nil {
return nil, clues.Wrap(err, "getting backup")
}
return bup, nil
}
func getBackupAndDetailsFromID(
ctx context.Context,
backupID model.StableID,
ms *store.Wrapper,
detailsStore streamstore.Reader,
errs *fault.Bus,
) (*backup.Backup, *details.Details, error) {
bup, err := ms.GetBackup(ctx, backupID)
if err != nil {
return nil, nil, clues.Wrap(err, "getting backup")
}
var (
deets details.Details
umt = streamstore.DetailsReader(details.UnmarshalTo(&deets))
ssid = bup.StreamStoreID
)
if len(ssid) == 0 {
ssid = bup.DetailsID
}
if len(ssid) == 0 {
return bup, nil, clues.New("no details or errors in backup").WithClues(ctx)
}
if err := detailsStore.Read(ctx, ssid, umt, errs); err != nil {
return nil, nil, clues.Wrap(err, "reading backup data from streamstore")
}
return bup, &deets, nil
}