Chromium Code Reviews

Unified Diff: go/src/infra/gae/libs/gae/memory/datastore_query.go

Issue 1242043005: Improve memory implementation of gae to provide the full RawDatastore interface. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@port_broken_features
Patch Set: further simplification of CL Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: go/src/infra/gae/libs/gae/memory/datastore_query.go
diff --git a/go/src/infra/gae/libs/gae/memory/datastore_query.go b/go/src/infra/gae/libs/gae/memory/datastore_query.go
index b8df9dc20db2977496b2e4765d578d47147e3b91..ae2f4f9aad9d6c920b5dfe907b0db03aa2252d99 100644
--- a/go/src/infra/gae/libs/gae/memory/datastore_query.go
+++ b/go/src/infra/gae/libs/gae/memory/datastore_query.go
@@ -218,18 +218,19 @@ func (q queryCursor) String() string { return string(q) }
func (q queryCursor) Valid() bool { return q != "" }
type queryImpl struct {
- gae.DSQuery
-
ns string
kind string
ancestor gae.DSKey
filter []queryFilter
order []queryOrder
+ project []string
- keysOnly bool
- limit int32
- offset int32
+ distinct bool
+ eventualConsistency bool
+ keysOnly bool
+ limit int32
+ offset int32
start queryCursor
end queryCursor
@@ -237,6 +238,8 @@ type queryImpl struct {
err error
}
+var _ gae.DSQuery = (*queryImpl)(nil)
+
type queryIterImpl struct {
idx *queryImpl
}
@@ -469,6 +472,7 @@ func (q *queryImpl) clone() *queryImpl {
ret := *q
ret.filter = append([]queryFilter(nil), q.filter...)
ret.order = append([]queryOrder(nil), q.order...)
+ ret.project = append([]string(nil), q.project...)
return &ret
}
@@ -489,6 +493,12 @@ func (q *queryImpl) Ancestor(k gae.DSKey) gae.DSQuery {
return q
}
+func (q *queryImpl) Distinct() gae.DSQuery {
+ q = q.clone()
+ q.distinct = true
+ return q
+}
+
func (q *queryImpl) Filter(fStr string, val interface{}) gae.DSQuery {
q = q.clone()
f, err := parseFilter(fStr, val)
@@ -519,6 +529,12 @@ func (q *queryImpl) Order(field string) gae.DSQuery {
return q
}
+func (q *queryImpl) Project(fieldName ...string) gae.DSQuery {
+ q = q.clone()
+ q.project = append(q.project, fieldName...)
+ return q
+}
+
func (q *queryImpl) KeysOnly() gae.DSQuery {
q = q.clone()
q.keysOnly = true
@@ -570,3 +586,9 @@ func (q *queryImpl) End(c gae.DSCursor) gae.DSQuery {
q.end = curs
return q
}
+
+func (q *queryImpl) EventualConsistency() gae.DSQuery {
+ q = q.clone()
+ q.eventualConsistency = true
+ return q
+}

Powered by Google App Engine