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 |