| 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 30 matching lines...) Expand all Loading... |
| 41 } | 41 } |
| 42 | 42 |
| 43 func (d *datastoreImpl) MakeKey(elems ...interface{}) *Key { | 43 func (d *datastoreImpl) MakeKey(elems ...interface{}) *Key { |
| 44 return MakeKey(d.aid, d.ns, elems...) | 44 return MakeKey(d.aid, d.ns, elems...) |
| 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) NewIncompleteKeys(count int, kind string, parent *Key) (
keys []*Key) { |
| 52 if count > 0 { |
| 53 keys = make([]*Key, count) |
| 54 for i := range keys { |
| 55 keys[i] = d.NewKey(kind, "", 0, parent) |
| 56 } |
| 57 } |
| 58 return |
| 59 } |
| 60 |
| 51 func (d *datastoreImpl) NewKeyToks(toks []KeyTok) *Key { | 61 func (d *datastoreImpl) NewKeyToks(toks []KeyTok) *Key { |
| 52 return NewKeyToks(d.aid, d.ns, toks) | 62 return NewKeyToks(d.aid, d.ns, toks) |
| 53 } | 63 } |
| 54 | 64 |
| 55 // PopulateKey loads key into obj. | 65 // PopulateKey loads key into obj. |
| 56 // | 66 // |
| 57 // obj is any object that Interface.Get is able to accept. | 67 // obj is any object that Interface.Get is able to accept. |
| 58 // | 68 // |
| 59 // This method will panic if obj is an invalid datastore model. If the key could | 69 // 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. | 70 // not be applied to the object, nothing will happen. |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 if cbTyp.NumOut() > 1 { | 124 if cbTyp.NumOut() > 1 { |
| 115 badSig() | 125 badSig() |
| 116 } else if cbTyp.NumOut() == 1 && cbTyp.Out(0) != typeOfError { | 126 } else if cbTyp.NumOut() == 1 && cbTyp.Out(0) != typeOfError { |
| 117 badSig() | 127 badSig() |
| 118 } | 128 } |
| 119 hasErr = cbTyp.NumOut() == 1 | 129 hasErr = cbTyp.NumOut() == 1 |
| 120 | 130 |
| 121 return | 131 return |
| 122 } | 132 } |
| 123 | 133 |
| 134 func (d *datastoreImpl) AllocateIDs(keys ...*Key) ([]*Key, error) { |
| 135 if len(keys) == 0 { |
| 136 return nil, nil |
| 137 } |
| 138 |
| 139 // Duplicate the keys slice, then pass to our raw interface. |
| 140 allocKeys := make([]*Key, len(keys)) |
| 141 copy(allocKeys, keys) |
| 142 |
| 143 if err := d.RawInterface.AllocateIDs(allocKeys); err != nil { |
| 144 return nil, err |
| 145 } |
| 146 return allocKeys, nil |
| 147 } |
| 148 |
| 124 func (d *datastoreImpl) Run(q *Query, cbIface interface{}) error { | 149 func (d *datastoreImpl) Run(q *Query, cbIface interface{}) error { |
| 125 isKey, hasErr, hasCursorCB, mat := runParseCallback(cbIface) | 150 isKey, hasErr, hasCursorCB, mat := runParseCallback(cbIface) |
| 126 | 151 |
| 127 if isKey { | 152 if isKey { |
| 128 q = q.KeysOnly(true) | 153 q = q.KeysOnly(true) |
| 129 } | 154 } |
| 130 fq, err := q.Finalize() | 155 fq, err := q.Finalize() |
| 131 if err != nil { | 156 if err != nil { |
| 132 return err | 157 return err |
| 133 } | 158 } |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 currentDir = filepath.Dir(currentDir) | 486 currentDir = filepath.Dir(currentDir) |
| 462 } | 487 } |
| 463 } | 488 } |
| 464 | 489 |
| 465 func filterStop(err error) error { | 490 func filterStop(err error) error { |
| 466 if err == Stop { | 491 if err == Stop { |
| 467 err = nil | 492 err = nil |
| 468 } | 493 } |
| 469 return err | 494 return err |
| 470 } | 495 } |
| OLD | NEW |