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

Unified Diff: go/src/infra/gae/libs/gae/prod/raw_datastore_type_converter.go

Issue 1227183003: Change RawDatastore to do less reflection. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@move_dummy
Patch Set: fix No/ShouldIndex 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 | « go/src/infra/gae/libs/gae/prod/raw_datastore.go ('k') | go/src/infra/gae/libs/gae/properties.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: go/src/infra/gae/libs/gae/prod/raw_datastore_type_converter.go
diff --git a/go/src/infra/gae/libs/gae/prod/raw_datastore_type_converter.go b/go/src/infra/gae/libs/gae/prod/raw_datastore_type_converter.go
index 87fdce1400d00c1ff89281bc37ba9ca59c47f192..694722f361d401a6af84b39e213d39c30a0fb755 100644
--- a/go/src/infra/gae/libs/gae/prod/raw_datastore_type_converter.go
+++ b/go/src/infra/gae/libs/gae/prod/raw_datastore_type_converter.go
@@ -5,8 +5,6 @@
package prod
import (
- "errors"
-
"infra/gae/libs/gae"
"google.golang.org/appengine"
@@ -14,13 +12,13 @@ import (
)
type typeFilter struct {
- dps gae.DSPropertyLoadSaver
+ pls gae.DSPropertyLoadSaver
}
var _ datastore.PropertyLoadSaver = &typeFilter{}
-func (tf *typeFilter) Load(props []datastore.Property) (err error) {
- newProps := map[string][]gae.DSProperty{}
+func (tf *typeFilter) Load(props []datastore.Property) error {
+ pmap := make(gae.DSPropertyMap, len(props))
for _, p := range props {
val := p.Value
switch x := val.(type) {
@@ -34,24 +32,20 @@ func (tf *typeFilter) Load(props []datastore.Property) (err error) {
val = gae.DSGeoPoint(x)
}
prop := gae.DSProperty{}
- if err = prop.SetValue(val, p.NoIndex); err != nil {
- return err
+ is := gae.ShouldIndex
+ if p.NoIndex {
+ is = gae.NoIndex
}
- newProps[p.Name] = append(newProps[p.Name], prop)
- }
- convFailures, err := tf.dps.Load(newProps)
- if err == nil && len(convFailures) > 0 {
- me := make(gae.MultiError, len(convFailures))
- for i, f := range convFailures {
- me[i] = errors.New(f)
+ if err := prop.SetValue(val, is); err != nil {
+ return err
}
- err = me
+ pmap[p.Name] = append(pmap[p.Name], prop)
}
- return
+ return tf.pls.Load(pmap)
}
func (tf *typeFilter) Save() ([]datastore.Property, error) {
- newProps, err := tf.dps.Save()
+ newProps, err := tf.pls.Save(false)
if err != nil {
return nil, err
}
@@ -63,7 +57,7 @@ func (tf *typeFilter) Save() ([]datastore.Property, error) {
toAdd := datastore.Property{
Name: name,
Multiple: multiple,
- NoIndex: prop.NoIndex(),
+ NoIndex: prop.IndexSetting() == gae.NoIndex,
}
switch x := prop.Value().(type) {
case gae.DSByteString:
« no previous file with comments | « go/src/infra/gae/libs/gae/prod/raw_datastore.go ('k') | go/src/infra/gae/libs/gae/properties.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698