Generic item api update (#4356)
Minor updates to error handling for generic item implementation --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change - [ ] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Supportability/Tests - [ ] 💻 CI/Deployment - [x] 🧹 Tech Debt/Cleanup #### Issue(s) * #4191 #### Test Plan - [ ] 💪 Manual - [x] ⚡ Unit test - [x] 💚 E2E
This commit is contained in:
parent
6690fd3ea2
commit
a91c823e42
@ -14,6 +14,15 @@ import (
|
||||
"github.com/alcionai/corso/src/pkg/logger"
|
||||
)
|
||||
|
||||
var (
|
||||
_ Item = &prefetchedItem{}
|
||||
_ ItemInfo = &prefetchedItem{}
|
||||
_ ItemModTime = &prefetchedItem{}
|
||||
_ Item = &lazyItem{}
|
||||
_ ItemInfo = &lazyItem{}
|
||||
_ ItemModTime = &lazyItem{}
|
||||
)
|
||||
|
||||
func NewDeletedItem(itemID string) Item {
|
||||
return &prefetchedItem{
|
||||
id: itemID,
|
||||
@ -74,7 +83,10 @@ func (i prefetchedItem) ModTime() time.Time {
|
||||
}
|
||||
|
||||
type ItemDataGetter interface {
|
||||
GetData(context.Context) (io.ReadCloser, *details.ItemInfo, bool, error)
|
||||
GetData(
|
||||
context.Context,
|
||||
*fault.Bus,
|
||||
) (io.ReadCloser, *details.ItemInfo, bool, error)
|
||||
}
|
||||
|
||||
func NewLazyItem(
|
||||
@ -121,12 +133,9 @@ func (i lazyItem) ID() string {
|
||||
|
||||
func (i *lazyItem) ToReader() io.ReadCloser {
|
||||
return lazy.NewLazyReadCloser(func() (io.ReadCloser, error) {
|
||||
reader, info, delInFlight, err := i.itemGetter.GetData(i.ctx)
|
||||
reader, info, delInFlight, err := i.itemGetter.GetData(i.ctx, i.errs)
|
||||
if err != nil {
|
||||
err = clues.Stack(err)
|
||||
i.errs.AddRecoverable(i.ctx, err)
|
||||
|
||||
return nil, err
|
||||
return nil, clues.Stack(err)
|
||||
}
|
||||
|
||||
// If an item was deleted then return an empty file so we don't fail the
|
||||
|
||||
@ -146,9 +146,15 @@ func (mid *mockItemDataGetter) check(t *testing.T, expectCalled bool) {
|
||||
}
|
||||
|
||||
func (mid *mockItemDataGetter) GetData(
|
||||
context.Context,
|
||||
ctx context.Context,
|
||||
errs *fault.Bus,
|
||||
) (io.ReadCloser, *details.ItemInfo, bool, error) {
|
||||
mid.getCalled = true
|
||||
|
||||
if mid.err != nil {
|
||||
errs.AddRecoverable(ctx, mid.err)
|
||||
}
|
||||
|
||||
return mid.reader, mid.info, mid.delInFlight, mid.err
|
||||
}
|
||||
|
||||
|
||||
@ -425,6 +425,7 @@ type lazyItemGetter struct {
|
||||
|
||||
func (lig *lazyItemGetter) GetData(
|
||||
ctx context.Context,
|
||||
errs *fault.Bus,
|
||||
) (io.ReadCloser, *details.ItemInfo, bool, error) {
|
||||
itemData, info, err := getItemAndInfo(
|
||||
ctx,
|
||||
@ -446,6 +447,7 @@ func (lig *lazyItemGetter) GetData(
|
||||
}
|
||||
|
||||
err = clues.Stack(err)
|
||||
errs.AddRecoverable(ctx, err)
|
||||
|
||||
return nil, nil, false, err
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user