| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package datastore | 5 package datastore |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "fmt" | 8 "fmt" |
| 9 "reflect" | 9 "reflect" |
| 10 | 10 |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 mat := parseMultiArg(slice.Type()) | 301 mat := parseMultiArg(slice.Type()) |
| 302 | 302 |
| 303 keys, vals, err := mat.GetKeysPMs(d.aid, d.ns, slice, false) | 303 keys, vals, err := mat.GetKeysPMs(d.aid, d.ns, slice, false) |
| 304 if err != nil { | 304 if err != nil { |
| 305 return err | 305 return err |
| 306 } | 306 } |
| 307 | 307 |
| 308 lme := errors.NewLazyMultiError(len(keys)) | 308 lme := errors.NewLazyMultiError(len(keys)) |
| 309 i := 0 | 309 i := 0 |
| 310 err = d.RawInterface.PutMulti(keys, vals, func(key *Key, err error) erro
r { | 310 err = d.RawInterface.PutMulti(keys, vals, func(key *Key, err error) erro
r { |
| 311 » » if key != keys[i] { | 311 » » if !lme.Assign(i, err) && key != keys[i] { |
| 312 mat.setKey(slice.Index(i), key) | 312 mat.setKey(slice.Index(i), key) |
| 313 } | 313 } |
| 314 lme.Assign(i, err) | |
| 315 i++ | 314 i++ |
| 316 return nil | 315 return nil |
| 317 }) | 316 }) |
| 318 | 317 |
| 319 if err == nil { | 318 if err == nil { |
| 320 err = lme.Get() | 319 err = lme.Get() |
| 321 } | 320 } |
| 322 return err | 321 return err |
| 323 } | 322 } |
| 324 | 323 |
| 325 func (d *datastoreImpl) DeleteMulti(keys []*Key) (err error) { | 324 func (d *datastoreImpl) DeleteMulti(keys []*Key) (err error) { |
| 326 lme := errors.NewLazyMultiError(len(keys)) | 325 lme := errors.NewLazyMultiError(len(keys)) |
| 327 i := 0 | 326 i := 0 |
| 328 extErr := d.RawInterface.DeleteMulti(keys, func(internalErr error) error
{ | 327 extErr := d.RawInterface.DeleteMulti(keys, func(internalErr error) error
{ |
| 329 lme.Assign(i, internalErr) | 328 lme.Assign(i, internalErr) |
| 330 i++ | 329 i++ |
| 331 return nil | 330 return nil |
| 332 }) | 331 }) |
| 333 err = lme.Get() | 332 err = lme.Get() |
| 334 if err == nil { | 333 if err == nil { |
| 335 err = extErr | 334 err = extErr |
| 336 } | 335 } |
| 337 return | 336 return |
| 338 } | 337 } |
| 339 | 338 |
| 340 func (d *datastoreImpl) Raw() RawInterface { | 339 func (d *datastoreImpl) Raw() RawInterface { |
| 341 return d.RawInterface | 340 return d.RawInterface |
| 342 } | 341 } |
| OLD | NEW |