Chromium Code Reviews| Index: service/datastore/checkfilter.go |
| diff --git a/service/rawdatastore/checkfilter.go b/service/datastore/checkfilter.go |
| similarity index 60% |
| rename from service/rawdatastore/checkfilter.go |
| rename to service/datastore/checkfilter.go |
| index bf091358c7b0a21f0b17b99fc2623fea19845c61..0507d114fa6f7a503ad8c2e545365e4d6c80fbe7 100644 |
| --- a/service/rawdatastore/checkfilter.go |
| +++ b/service/datastore/checkfilter.go |
| @@ -2,7 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -package rawdatastore |
| +package datastore |
| import ( |
| "fmt" |
| @@ -13,7 +13,7 @@ import ( |
| ) |
| type checkFilter struct { |
| - Interface |
| + RawInterface |
| aid string |
| ns string |
| @@ -21,22 +21,28 @@ type checkFilter struct { |
| func (tcf *checkFilter) RunInTransaction(f func(c context.Context) error, opts *TransactionOptions) error { |
| if f == nil { |
| - return nil |
| + return fmt.Errorf("datastore: RunInTransaction function is nil") |
| } |
| - return tcf.Interface.RunInTransaction(f, opts) |
| + return tcf.RawInterface.RunInTransaction(f, opts) |
| } |
| -func (tcf *checkFilter) Run(q Query, cb RunCB) error { |
| - if q == nil || cb == nil { |
| - return nil |
| +func (tcf *checkFilter) Run(q Query, cb RawRunCB) error { |
| + if q == nil { |
| + return fmt.Errorf("datastore: Run query is nil") |
| } |
| - return tcf.Interface.Run(q, cb) |
| + if cb == nil { |
| + return fmt.Errorf("datastore: Run callback is nil") |
| + } |
| + return tcf.RawInterface.Run(q, cb) |
| } |
| func (tcf *checkFilter) GetMulti(keys []Key, cb GetMultiCB) error { |
| - if len(keys) == 0 || cb == nil { |
| + if len(keys) == 0 { |
| return nil |
| } |
| + if cb == nil { |
| + return fmt.Errorf("datastore: GetMulti callback is nil") |
|
dnj (Google)
2015/08/03 18:00:18
Use errors.New().
|
| + } |
| lme := errors.LazyMultiError{Size: len(keys)} |
| for i, k := range keys { |
| if KeyIncomplete(k) || !KeyValid(k, true, tcf.aid, tcf.ns) { |
| @@ -49,19 +55,23 @@ func (tcf *checkFilter) GetMulti(keys []Key, cb GetMultiCB) error { |
| } |
| return nil |
| } |
| - return tcf.Interface.GetMulti(keys, cb) |
| + return tcf.RawInterface.GetMulti(keys, cb) |
| } |
| -func (tcf *checkFilter) PutMulti(keys []Key, vals []PropertyLoadSaver, cb PutMultiCB) error { |
| +func (tcf *checkFilter) PutMulti(keys []Key, vals []PropertyMap, cb PutMultiCB) error { |
| if len(keys) != len(vals) { |
| - return fmt.Errorf("rawdatastore: GetMulti with mismatched keys/vals lengths (%d/%d)", len(keys), len(vals)) |
| + return fmt.Errorf("datastore: GetMulti with mismatched keys/vals lengths (%d/%d)", len(keys), len(vals)) |
| } |
| if len(keys) == 0 { |
| return nil |
| } |
| + if cb == nil { |
| + return fmt.Errorf("datastore: PutMulti callback is nil") |
|
dnj (Google)
2015/08/03 18:00:18
Use errors.New().
|
| + } |
| lme := errors.LazyMultiError{Size: len(keys)} |
| for i, k := range keys { |
| if KeyIncomplete(k) { |
| + // use NewKey to avoid going all the way down the stack for this check. |
| k = NewKey(k.AppID(), k.Namespace(), k.Kind(), "", 1, k.Parent()) |
| } |
| if !KeyValid(k, false, tcf.aid, tcf.ns) { |
| @@ -70,9 +80,7 @@ func (tcf *checkFilter) PutMulti(keys []Key, vals []PropertyLoadSaver, cb PutMul |
| } |
| v := vals[i] |
| if v == nil { |
| - lme.Assign(i, errors.New("rawdatastore: PutMulti got nil vals entry")) |
| - } else { |
| - lme.Assign(i, v.Problem()) |
| + lme.Assign(i, errors.New("datastore: PutMulti got nil vals entry")) |
| } |
| } |
| if me := lme.Get(); me != nil { |
| @@ -82,26 +90,16 @@ func (tcf *checkFilter) PutMulti(keys []Key, vals []PropertyLoadSaver, cb PutMul |
| return nil |
| } |
| - err := error(nil) |
| - pmVals := make([]PropertyLoadSaver, len(vals)) |
| - for i, val := range vals { |
| - pmVals[i], err = val.Save(true) |
| - lme.Assign(i, err) |
| - } |
| - if me := lme.Get(); me != nil { |
| - for _, err := range me.(errors.MultiError) { |
| - cb(nil, err) |
| - } |
| - return nil |
| - } |
| - |
| - return tcf.Interface.PutMulti(keys, pmVals, cb) |
| + return tcf.RawInterface.PutMulti(keys, vals, cb) |
| } |
| func (tcf *checkFilter) DeleteMulti(keys []Key, cb DeleteMultiCB) error { |
| if len(keys) == 0 { |
| return nil |
| } |
| + if cb == nil { |
| + return fmt.Errorf("datastore: DeleteMulti callback is nil") |
|
dnj (Google)
2015/08/03 18:00:18
Use errors.New().
|
| + } |
| lme := errors.LazyMultiError{Size: len(keys)} |
| for i, k := range keys { |
| if KeyIncomplete(k) || !KeyValid(k, false, tcf.aid, tcf.ns) { |
| @@ -114,10 +112,10 @@ func (tcf *checkFilter) DeleteMulti(keys []Key, cb DeleteMultiCB) error { |
| } |
| return nil |
| } |
| - return tcf.Interface.DeleteMulti(keys, cb) |
| + return tcf.RawInterface.DeleteMulti(keys, cb) |
| } |
| -func applyCheckFilter(c context.Context, i Interface) Interface { |
| +func applyCheckFilter(c context.Context, i RawInterface) RawInterface { |
| inf := info.Get(c) |
| return &checkFilter{i, inf.AppID(), inf.GetNamespace()} |
| } |