| Index: service/datastore/multiarg.go
|
| diff --git a/service/datastore/multiarg.go b/service/datastore/multiarg.go
|
| index 494d3952c9f2ad4fc8b6eecc502053083ceeb3eb..3398b1e4ab3490aa3fba5e871f29793de044c201 100644
|
| --- a/service/datastore/multiarg.go
|
| +++ b/service/datastore/multiarg.go
|
| @@ -21,26 +21,21 @@ type multiArgType struct {
|
| newElem func() reflect.Value
|
| }
|
|
|
| -func (mat *multiArgType) GetKeys(nk newKeyFunc, slice reflect.Value) ([]Key, error) {
|
| - ret := make([]Key, slice.Len())
|
| - lme := errors.LazyMultiError{Size: len(ret)}
|
| - for i := range ret {
|
| +func (mat *multiArgType) GetKeysPMs(nk newKeyFunc, slice reflect.Value) ([]Key, []PropertyMap, error) {
|
| + retKey := make([]Key, slice.Len())
|
| + retPM := make([]PropertyMap, slice.Len())
|
| + lme := errors.LazyMultiError{Size: len(retKey)}
|
| + for i := range retKey {
|
| key, err := mat.getKey(nk, slice.Index(i))
|
| - lme.Assign(i, err)
|
| - ret[i] = key
|
| - }
|
| - return ret, lme.Get()
|
| -}
|
| -
|
| -func (mat *multiArgType) GetPMs(slice reflect.Value) ([]PropertyMap, error) {
|
| - ret := make([]PropertyMap, slice.Len())
|
| - lme := errors.LazyMultiError{Size: len(ret)}
|
| - for i := range ret {
|
| - key, err := mat.getPM(slice.Index(i))
|
| - lme.Assign(i, err)
|
| - ret[i] = key
|
| + if !lme.Assign(i, err) {
|
| + retKey[i] = key
|
| + pm, err := mat.getPM(slice.Index(i))
|
| + if !lme.Assign(i, err) {
|
| + retPM[i] = pm
|
| + }
|
| + }
|
| }
|
| - return ret, lme.Get()
|
| + return retKey, retPM, lme.Get()
|
| }
|
|
|
| // parseMultiArg checks that v has type []S, []*S, []I, []P or []*P, for some
|
|
|