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"
|
"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 {
|
func NewDeletedItem(itemID string) Item {
|
||||||
return &prefetchedItem{
|
return &prefetchedItem{
|
||||||
id: itemID,
|
id: itemID,
|
||||||
@ -74,7 +83,10 @@ func (i prefetchedItem) ModTime() time.Time {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ItemDataGetter interface {
|
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(
|
func NewLazyItem(
|
||||||
@ -121,12 +133,9 @@ func (i lazyItem) ID() string {
|
|||||||
|
|
||||||
func (i *lazyItem) ToReader() io.ReadCloser {
|
func (i *lazyItem) ToReader() io.ReadCloser {
|
||||||
return lazy.NewLazyReadCloser(func() (io.ReadCloser, error) {
|
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 {
|
if err != nil {
|
||||||
err = clues.Stack(err)
|
return nil, clues.Stack(err)
|
||||||
i.errs.AddRecoverable(i.ctx, err)
|
|
||||||
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If an item was deleted then return an empty file so we don't fail the
|
// 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(
|
func (mid *mockItemDataGetter) GetData(
|
||||||
context.Context,
|
ctx context.Context,
|
||||||
|
errs *fault.Bus,
|
||||||
) (io.ReadCloser, *details.ItemInfo, bool, error) {
|
) (io.ReadCloser, *details.ItemInfo, bool, error) {
|
||||||
mid.getCalled = true
|
mid.getCalled = true
|
||||||
|
|
||||||
|
if mid.err != nil {
|
||||||
|
errs.AddRecoverable(ctx, mid.err)
|
||||||
|
}
|
||||||
|
|
||||||
return mid.reader, mid.info, mid.delInFlight, mid.err
|
return mid.reader, mid.info, mid.delInFlight, mid.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -425,6 +425,7 @@ type lazyItemGetter struct {
|
|||||||
|
|
||||||
func (lig *lazyItemGetter) GetData(
|
func (lig *lazyItemGetter) GetData(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
|
errs *fault.Bus,
|
||||||
) (io.ReadCloser, *details.ItemInfo, bool, error) {
|
) (io.ReadCloser, *details.ItemInfo, bool, error) {
|
||||||
itemData, info, err := getItemAndInfo(
|
itemData, info, err := getItemAndInfo(
|
||||||
ctx,
|
ctx,
|
||||||
@ -446,6 +447,7 @@ func (lig *lazyItemGetter) GetData(
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = clues.Stack(err)
|
err = clues.Stack(err)
|
||||||
|
errs.AddRecoverable(ctx, err)
|
||||||
|
|
||||||
return nil, nil, false, err
|
return nil, nil, false, err
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user