diff --git a/src/internal/operations/common.go b/src/internal/operations/common.go new file mode 100644 index 000000000..389db0fe7 --- /dev/null +++ b/src/internal/operations/common.go @@ -0,0 +1,38 @@ +package operations + +import ( + "context" + + "github.com/pkg/errors" + + "github.com/alcionai/corso/src/internal/kopia" + "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/path" + "github.com/alcionai/corso/src/pkg/store" +) + +func getBackupAndDetailsFromID( + ctx context.Context, + tenant string, + backupID model.StableID, + service path.ServiceType, + ms *store.Wrapper, + kw *kopia.Wrapper, +) (*backup.Backup, *details.Details, error) { + dID, bup, err := ms.GetDetailsIDFromBackupID(ctx, backupID) + if err != nil { + return nil, nil, errors.Wrap(err, "getting backup details ID") + } + + deets, err := streamstore. + New(kw, tenant, service). + ReadBackupDetails(ctx, dID) + if err != nil { + return nil, nil, errors.Wrap(err, "getting backup details data") + } + + return bup, deets, nil +} diff --git a/src/internal/operations/restore.go b/src/internal/operations/restore.go index c29153c86..29d02d8a1 100644 --- a/src/internal/operations/restore.go +++ b/src/internal/operations/restore.go @@ -18,7 +18,6 @@ import ( "github.com/alcionai/corso/src/internal/model" "github.com/alcionai/corso/src/internal/observe" "github.com/alcionai/corso/src/internal/stats" - "github.com/alcionai/corso/src/internal/streamstore" "github.com/alcionai/corso/src/pkg/account" "github.com/alcionai/corso/src/pkg/backup/details" "github.com/alcionai/corso/src/pkg/control" @@ -118,21 +117,16 @@ func (op *RestoreOperation) Run(ctx context.Context) (restoreDetails *details.De } }() - dID, bup, err := op.store.GetDetailsIDFromBackupID(ctx, op.BackupID) - if err != nil { - err = errors.Wrap(err, "getting backup details ID for restore") - opStats.readErr = err - - return nil, err - } - - deets, err := streamstore.New( - op.kopia, + bup, deets, err := getBackupAndDetailsFromID( + ctx, op.account.ID(), + op.BackupID, op.Selectors.PathService(), - ).ReadBackupDetails(ctx, dID) + op.store, + op.kopia, + ) if err != nil { - err = errors.Wrap(err, "getting backup details data for restore") + err = errors.Wrap(err, "restore") opStats.readErr = err return nil, err