#### 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
61 lines
1.3 KiB
Go
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
|
|
}
|