| OLD | NEW |
| 1 // Copyright 2015 The LUCI Authors. All rights reserved. | 1 // Copyright 2015 The LUCI Authors. All rights reserved. |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
| 3 // that can be found in the LICENSE file. | 3 // that can be 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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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. | 55 // PopulateKey loads key into obj. |
| 56 // | 56 // |
| 57 // obj is any object that Interface.Get is able to accept. | 57 // obj is any object that Interface.Get is able to accept. |
| 58 // | 58 // |
| 59 // This method will panic if obj is an invalid datastore model. If the key could | 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. | 60 // not be applied to the object, nothing will happen. |
| 61 func PopulateKey(obj interface{}, key *Key) { | 61 func PopulateKey(obj interface{}, key *Key) { |
| 62 » pls := getMGS(obj) | 62 » populateKeyMGS(getMGS(obj), key) |
| 63 » if !pls.SetMeta("key", key) { | 63 } |
| 64 |
| 65 func populateKeyMGS(mgs MetaGetterSetter, key *Key) { |
| 66 » if !mgs.SetMeta("key", key) { |
| 64 lst := key.LastTok() | 67 lst := key.LastTok() |
| 65 if lst.StringID != "" { | 68 if lst.StringID != "" { |
| 66 » » » pls.SetMeta("id", lst.StringID) | 69 » » » mgs.SetMeta("id", lst.StringID) |
| 67 } else { | 70 } else { |
| 68 » » » pls.SetMeta("id", lst.IntID) | 71 » » » mgs.SetMeta("id", lst.IntID) |
| 69 } | 72 } |
| 70 » » pls.SetMeta("kind", lst.Kind) | 73 » » mgs.SetMeta("kind", lst.Kind) |
| 71 » » pls.SetMeta("parent", key.Parent()) | 74 » » mgs.SetMeta("parent", key.Parent()) |
| 72 } | 75 } |
| 73 } | 76 } |
| 74 | 77 |
| 75 func checkMultiSliceType(v interface{}) error { | 78 func checkMultiSliceType(v interface{}) error { |
| 76 if reflect.TypeOf(v).Kind() == reflect.Slice { | 79 if reflect.TypeOf(v).Kind() == reflect.Slice { |
| 77 return nil | 80 return nil |
| 78 } | 81 } |
| 79 return fmt.Errorf("argument must be a slice, not %T", v) | 82 return fmt.Errorf("argument must be a slice, not %T", v) |
| 80 | 83 |
| 81 } | 84 } |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 currentDir = filepath.Dir(currentDir) | 514 currentDir = filepath.Dir(currentDir) |
| 512 } | 515 } |
| 513 } | 516 } |
| 514 | 517 |
| 515 func filterStop(err error) error { | 518 func filterStop(err error) error { |
| 516 if err == Stop { | 519 if err == Stop { |
| 517 err = nil | 520 err = nil |
| 518 } | 521 } |
| 519 return err | 522 return err |
| 520 } | 523 } |
| OLD | NEW |