Index: service/datastore/interface.go |
diff --git a/service/datastore/interface.go b/service/datastore/interface.go |
index 33b1f0f2269d5bcc03f4d84c108af86c3725a17b..e547bfb3fbb23e7015e32e1279ae5c26fe91c1a8 100644 |
--- a/service/datastore/interface.go |
+++ b/service/datastore/interface.go |
@@ -20,15 +20,34 @@ import ( |
// Struct objects passed in will be converted to PropertyLoadSaver interfaces |
// using this package's GetPLS function. |
type Interface interface { |
- // NewKey produces a new Key with the current appid and namespace. |
- NewKey(kind, stringID string, intID int64, parent Key) Key |
- |
// KeyForObj extracts a key from src. |
// |
// It is the same as KeyForObjErr, except that if KeyForObjErr would have |
// returned an error, this method panics. It's safe to use if you know that |
// src statically meets the metadata constraints described by KeyForObjErr. |
- KeyForObj(src interface{}) Key |
+ KeyForObj(src interface{}) *Key |
+ |
+ // MakeKey is a convenience method for manufacturing a *Key. It should only be |
+ // used when elems... is known statically (e.g. in the code) to be correct. |
+ // |
+ // elems is pairs of (string, string|int|int32|int64) pairs, which correspond |
+ // to Kind/id pairs. Example: |
+ // dstore.MakeKey("Parent", 1, "Child", "id") |
+ // |
+ // Would create the key: |
+ // <current appID>:<current Namespace>:/Parent,1/Child,id |
+ // |
+ // If elems is not parsable (e.g. wrong length, wrong types, etc.) this method |
+ // will panic. |
+ MakeKey(elems ...interface{}) *Key |
+ |
+ // NewKey constructs a new key in the current appID/Namespace, using the |
+ // specified parameters. |
+ NewKey(kind, stringID string, intID int64, parent *Key) *Key |
+ |
+ // NewKeyToks constructs a new key in the current appID/Namespace, using the |
+ // specified key tokens. |
+ NewKeyToks([]KeyTok) *Key |
// KeyForObjErr extracts a key from src. |
// |
@@ -48,17 +67,7 @@ type Interface interface { |
// |
// If a required metadata item is missing or of the wrong type, then this will |
// return an error. |
- KeyForObjErr(src interface{}) (Key, error) |
- |
- // DecodeKey decodes a proto-encoded key. |
- // |
- // The encoding is defined by the appengine SDK's implementation. In |
- // particular, it is a no-pad-base64-encoded protobuf. If there's an error |
- // during the decoding process, it will be returned. |
- DecodeKey(encoded string) (Key, error) |
- |
- // NewQuery creates a new Query object. No server communication occurs. |
- NewQuery(kind string) Query |
+ KeyForObjErr(src interface{}) (*Key, error) |
// RunInTransaction runs f inside of a transaction. See the appengine SDK's |
// documentation for full details on the behavior of transactions in the |
@@ -78,10 +87,10 @@ type Interface interface { |
// Where TYPE is one of: |
// - S or *S where S is a struct |
// - P or *P where *P is a concrete type implementing PropertyLoadSaver |
- // - Key (implies a keys-only query) |
+ // - *Key (implies a keys-only query) |
// |
// Run stops on the first error encountered. |
- Run(q Query, cb interface{}) error |
+ Run(q *Query, cb interface{}) error |
// DecodeCursor converts a string returned by a Cursor into a Cursor instance. |
// It will return an error if the supplied string is not valid, or could not |
@@ -94,8 +103,8 @@ type Interface interface { |
// - *[]S or *[]*S where S is a struct |
// - *[]P or *[]*P where *P is a concrete type implementing |
// PropertyLoadSaver |
- // - *[]Key implies a keys-only query. |
- GetAll(q Query, dst interface{}) error |
+ // - *[]*Key implies a keys-only query. |
+ GetAll(q *Query, dst interface{}) error |
// Get retrieves a single object from the datastore |
// |
@@ -110,13 +119,13 @@ type Interface interface { |
// - *S where S is a struct |
// - *P where *P is a concrete type implementing PropertyLoadSaver |
// |
- // A Key will be extracted from src via KeyForObj. If |
- // KeyIncomplete(extractedKey) is true, then Put will write the resolved (i.e. |
- // automatic datastore-populated) Key back to src. |
+ // A *Key will be extracted from src via KeyForObj. If |
+ // extractedKey.Incomplete() is true, then Put will write the resolved (i.e. |
+ // automatic datastore-populated) *Key back to src. |
Put(src interface{}) error |
// Delete removes an item from the datastore. |
- Delete(key Key) error |
+ Delete(key *Key) error |
// GetMulti retrieves items from the datastore. |
// |
@@ -140,7 +149,7 @@ type Interface interface { |
PutMulti(src interface{}) error |
// DeleteMulti removes items from the datastore. |
- DeleteMulti(keys []Key) error |
+ DeleteMulti(keys []*Key) error |
// Testable returns the Testable interface for the implementation, or nil if |
// there is none. |