Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Unified Diff: service/rawdatastore/datastore_key.go

Issue 1243323002: Refactor a bit. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: fix golint Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « service/rawdatastore/datastore_impl.go ('k') | service/rawdatastore/datastore_key_test.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: service/rawdatastore/datastore_key.go
diff --git a/helper/datastore_key.go b/service/rawdatastore/datastore_key.go
similarity index 65%
rename from helper/datastore_key.go
rename to service/rawdatastore/datastore_key.go
index bfd55edc63dfb418746a57c0baf2e61949d11b1f..672842cccd1e2f1a133c7eda277ef0f57114aab0 100644
--- a/helper/datastore_key.go
+++ b/service/rawdatastore/datastore_key.go
@@ -4,7 +4,7 @@
// adapted from github.com/golang/appengine/datastore
-package helper
+package rawdatastore
import (
"bytes"
@@ -13,17 +13,16 @@ import (
"strconv"
"strings"
- "github.com/luci/gae"
- pb "github.com/luci/gae/helper/internal/protos/datastore"
+ pb "github.com/luci/gae/service/rawdatastore/internal/protos/datastore"
"github.com/golang/protobuf/proto"
)
-// DSKeyEncode encodes the provided key as a base64-encoded protobuf.
+// KeyEncode encodes the provided key as a base64-encoded protobuf.
//
// This encoding is compatible with the SDK-provided encoding and is agnostic
-// to the underlying implementation of the DSKey.
-func DSKeyEncode(k gae.DSKey) string {
+// to the underlying implementation of the Key.
+func KeyEncode(k Key) string {
n := 0
for i := k; i != nil; i = i.Parent() {
n++
@@ -64,13 +63,13 @@ func DSKeyEncode(k gae.DSKey) string {
return strings.TrimRight(base64.URLEncoding.EncodeToString(r), "=")
}
-// DSKeyToksDecode decodes a base64-encoded protobuf representation of a DSKey
+// KeyToksDecode decodes a base64-encoded protobuf representation of a Key
// into a tokenized form. This is so that implementations of the gae wrapper
-// can decode to their own implementation of DSKey.
+// can decode to their own implementation of Key.
//
// This encoding is compatible with the SDK-provided encoding and is agnostic
-// to the underlying implementation of the DSKey.
-func DSKeyToksDecode(encoded string) (appID, namespace string, toks []gae.DSKeyTok, err error) {
+// to the underlying implementation of the Key.
+func KeyToksDecode(encoded string) (appID, namespace string, toks []KeyTok, err error) {
// Re-add padding
if m := len(encoded) % 4; m != 0 {
encoded += strings.Repeat("=", 4-m)
@@ -87,9 +86,9 @@ func DSKeyToksDecode(encoded string) (appID, namespace string, toks []gae.DSKeyT
appID = r.GetApp()
namespace = r.GetNameSpace()
- toks = make([]gae.DSKeyTok, len(r.Path.Element))
+ toks = make([]KeyTok, len(r.Path.Element))
for i, e := range r.Path.Element {
- toks[i] = gae.DSKeyTok{
+ toks[i] = KeyTok{
Kind: e.GetType(),
IntID: e.GetId(),
StringID: e.GetName(),
@@ -98,28 +97,28 @@ func DSKeyToksDecode(encoded string) (appID, namespace string, toks []gae.DSKeyT
return
}
-// DSKeyMarshalJSON returns a MarshalJSON-compatible serialization of a DSKey.
-func DSKeyMarshalJSON(k gae.DSKey) ([]byte, error) {
- return []byte(`"` + DSKeyEncode(k) + `"`), nil
+// KeyMarshalJSON returns a MarshalJSON-compatible serialization of a Key.
+func KeyMarshalJSON(k Key) ([]byte, error) {
+ return []byte(`"` + KeyEncode(k) + `"`), nil
}
-// DSKeyUnmarshalJSON returns the tokenized version of a DSKey as encoded by
-// DSKeyMarshalJSON.
-func DSKeyUnmarshalJSON(buf []byte) (appID, namespace string, toks []gae.DSKeyTok, err error) {
+// KeyUnmarshalJSON returns the tokenized version of a Key as encoded by
+// KeyMarshalJSON.
+func KeyUnmarshalJSON(buf []byte) (appID, namespace string, toks []KeyTok, err error) {
if len(buf) < 2 || buf[0] != '"' || buf[len(buf)-1] != '"' {
err = errors.New("datastore: bad JSON key")
} else {
- appID, namespace, toks, err = DSKeyToksDecode(string(buf[1 : len(buf)-1]))
+ appID, namespace, toks, err = KeyToksDecode(string(buf[1 : len(buf)-1]))
}
return
}
-// DSKeyIncomplete returns true iff k doesn't have an id yet.
-func DSKeyIncomplete(k gae.DSKey) bool {
+// KeyIncomplete returns true iff k doesn't have an id yet.
+func KeyIncomplete(k Key) bool {
return k != nil && k.StringID() == "" && k.IntID() == 0
}
-// DSKeyValid determines if a key is valid, according to a couple rules:
+// KeyValid determines if a key is valid, according to a couple rules:
// - k is not nil
// - k's namespace matches ns
// - every token of k:
@@ -127,7 +126,7 @@ func DSKeyIncomplete(k gae.DSKey) bool {
// - token's kind and appid are non-blank
// - token is not incomplete
// - all tokens have the same namespace and appid
-func DSKeyValid(k gae.DSKey, ns string, allowSpecial bool) bool {
+func KeyValid(k Key, ns string, allowSpecial bool) bool {
if k == nil {
return false
}
@@ -147,7 +146,7 @@ func DSKeyValid(k gae.DSKey, ns string, allowSpecial bool) bool {
return false
}
if k.Parent() != nil {
- if DSKeyIncomplete(k.Parent()) {
+ if KeyIncomplete(k.Parent()) {
return false
}
if k.Parent().AppID() != k.AppID() || k.Parent().Namespace() != k.Namespace() {
@@ -158,16 +157,16 @@ func DSKeyValid(k gae.DSKey, ns string, allowSpecial bool) bool {
return true
}
-// DSKeyRoot returns the entity root for the given key.
-func DSKeyRoot(k gae.DSKey) gae.DSKey {
+// KeyRoot returns the entity root for the given key.
+func KeyRoot(k Key) Key {
for k != nil && k.Parent() != nil {
k = k.Parent()
}
return k
}
-// DSKeysEqual returns true iff the two keys represent identical key values.
-func DSKeysEqual(a, b gae.DSKey) (ret bool) {
+// KeysEqual returns true iff the two keys represent identical key values.
+func KeysEqual(a, b Key) (ret bool) {
ret = (a.Kind() == b.Kind() &&
a.StringID() == b.StringID() &&
a.IntID() == b.IntID() &&
@@ -177,10 +176,10 @@ func DSKeysEqual(a, b gae.DSKey) (ret bool) {
return
}
ap, bp := a.Parent(), b.Parent()
- return (ap == nil && bp == nil) || DSKeysEqual(ap, bp)
+ return (ap == nil && bp == nil) || KeysEqual(ap, bp)
}
-func marshalDSKey(b *bytes.Buffer, k gae.DSKey) {
+func marshalDSKey(b *bytes.Buffer, k Key) {
if k.Parent() != nil {
marshalDSKey(b, k.Parent())
}
@@ -194,9 +193,9 @@ func marshalDSKey(b *bytes.Buffer, k gae.DSKey) {
}
}
-// DSKeyString returns a human-readable representation of the key, and is the
-// typical implementation of DSKey.String() (though it isn't guaranteed to be)
-func DSKeyString(k gae.DSKey) string {
+// KeyString returns a human-readable representation of the key, and is the
+// typical implementation of Key.String() (though it isn't guaranteed to be)
+func KeyString(k Key) string {
if k == nil {
return ""
}
@@ -205,14 +204,14 @@ func DSKeyString(k gae.DSKey) string {
return b.String()
}
-// DSKeySplit splits the key into its constituent parts. Note that if the key is
-// not DSKeyValid, this method may not provide a round-trip for k.
-func DSKeySplit(k gae.DSKey) (appID, namespace string, toks []gae.DSKeyTok) {
+// KeySplit splits the key into its constituent parts. Note that if the key is
+// not KeyValid, this method may not provide a round-trip for k.
+func KeySplit(k Key) (appID, namespace string, toks []KeyTok) {
if k == nil {
return
}
- if sk, ok := k.(*GenericDSKey); ok {
+ if sk, ok := k.(*GenericKey); ok {
if sk == nil {
return
}
@@ -223,7 +222,7 @@ func DSKeySplit(k gae.DSKey) (appID, namespace string, toks []gae.DSKeyTok) {
for i := k; i != nil; i = i.Parent() {
n++
}
- toks = make([]gae.DSKeyTok, n)
+ toks = make([]KeyTok, n)
for i := k; i != nil; i = i.Parent() {
n--
toks[n].IntID = i.IntID()
« no previous file with comments | « service/rawdatastore/datastore_impl.go ('k') | service/rawdatastore/datastore_key_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698