| 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 "io" | 9 "io" |
| 10 "io/ioutil" | 10 "io/ioutil" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 } | 45 } |
| 46 | 46 |
| 47 func (d *datastoreImpl) NewKey(kind, stringID string, intID int64, parent *Key)
*Key { | 47 func (d *datastoreImpl) NewKey(kind, stringID string, intID int64, parent *Key)
*Key { |
| 48 return NewKey(d.aid, d.ns, kind, stringID, intID, parent) | 48 return NewKey(d.aid, d.ns, kind, stringID, intID, parent) |
| 49 } | 49 } |
| 50 | 50 |
| 51 func (d *datastoreImpl) NewKeyToks(toks []KeyTok) *Key { | 51 func (d *datastoreImpl) NewKeyToks(toks []KeyTok) *Key { |
| 52 return NewKeyToks(d.aid, d.ns, toks) | 52 return NewKeyToks(d.aid, d.ns, toks) |
| 53 } | 53 } |
| 54 | 54 |
| 55 // PopulateKey loads key into obj. |
| 56 // |
| 57 // obj is any object that Interface.Get is able to accept. |
| 58 // |
| 59 // This method will panic if obj is an invalid datastore model. If the key could |
| 60 // not be applied to the object, nothing will happen. |
| 61 func PopulateKey(obj interface{}, key *Key) { |
| 62 pls := getMGS(obj) |
| 63 if !pls.SetMeta("key", key) { |
| 64 lst := key.LastTok() |
| 65 if lst.StringID != "" { |
| 66 pls.SetMeta("id", lst.StringID) |
| 67 } else { |
| 68 pls.SetMeta("id", lst.IntID) |
| 69 } |
| 70 pls.SetMeta("kind", lst.Kind) |
| 71 pls.SetMeta("parent", key.Parent()) |
| 72 } |
| 73 } |
| 74 |
| 55 func runParseCallback(cbIface interface{}) (isKey, hasErr, hasCursorCB bool, mat
multiArgType) { | 75 func runParseCallback(cbIface interface{}) (isKey, hasErr, hasCursorCB bool, mat
multiArgType) { |
| 56 badSig := func() { | 76 badSig := func() { |
| 57 panic(fmt.Errorf( | 77 panic(fmt.Errorf( |
| 58 "cb does not match the required callback signature: `%T`
!= `func(TYPE, [CursorCB]) [error]`", | 78 "cb does not match the required callback signature: `%T`
!= `func(TYPE, [CursorCB]) [error]`", |
| 59 cbIface)) | 79 cbIface)) |
| 60 } | 80 } |
| 61 | 81 |
| 62 if cbIface == nil { | 82 if cbIface == nil { |
| 63 badSig() | 83 badSig() |
| 64 } | 84 } |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 currentDir = filepath.Dir(currentDir) | 461 currentDir = filepath.Dir(currentDir) |
| 442 } | 462 } |
| 443 } | 463 } |
| 444 | 464 |
| 445 func filterStop(err error) error { | 465 func filterStop(err error) error { |
| 446 if err == Stop { | 466 if err == Stop { |
| 447 err = nil | 467 err = nil |
| 448 } | 468 } |
| 449 return err | 469 return err |
| 450 } | 470 } |
| OLD | NEW |