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

Unified Diff: service/datastore/context.go

Issue 2302743002: Interface update, per-method Contexts. (Closed)
Patch Set: Lightning talk licenses. Created 4 years, 3 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/datastore/checkfilter_test.go ('k') | service/datastore/context_test.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: service/datastore/context.go
diff --git a/service/datastore/context.go b/service/datastore/context.go
index 717797bb3eb94694fad9b80dfda7efb8a1c4d889..8557a5f5fb77cc593a480bfa375f1db31a8826d3 100644
--- a/service/datastore/context.go
+++ b/service/datastore/context.go
@@ -6,6 +6,7 @@ package datastore
import (
"github.com/luci/gae/service/info"
+
"golang.org/x/net/context"
)
@@ -17,10 +18,8 @@ var (
)
// RawFactory is the function signature for factory methods compatible with
-// SetRawFactory. wantTxn is true if the Factory should return the datastore in
-// the current transaction, and false if the Factory should return the
-// non-transactional (root) datastore.
-type RawFactory func(c context.Context, wantTxn bool) RawInterface
+// SetRawFactory.
+type RawFactory func(c context.Context) RawInterface
// RawFilter is the function signature for a RawFilter implementation. It
// gets the current RDS implementation, and returns a new RDS implementation
@@ -29,17 +28,17 @@ type RawFilter func(context.Context, RawInterface) RawInterface
// getUnfiltered gets gets the RawInterface implementation from context without
// any of the filters applied.
-func getUnfiltered(c context.Context, wantTxn bool) RawInterface {
+func getUnfiltered(c context.Context) RawInterface {
if f, ok := c.Value(rawDatastoreKey).(RawFactory); ok && f != nil {
- return f(c, wantTxn)
+ return f(c)
}
return nil
}
// getFiltered gets the datastore (transactional or not), and applies all of
// the currently installed filters to it.
-func getFiltered(c context.Context, wantTxn bool) RawInterface {
- ret := getUnfiltered(c, wantTxn)
+func getFiltered(c context.Context) RawInterface {
+ ret := getUnfiltered(c)
if ret == nil {
return nil
}
@@ -49,45 +48,13 @@ func getFiltered(c context.Context, wantTxn bool) RawInterface {
return applyCheckFilter(c, ret)
}
-// GetRaw gets the RawInterface implementation from context.
-func GetRaw(c context.Context) RawInterface {
- return getFiltered(c, true)
-}
-
-// GetRawNoTxn gets the RawInterface implementation from context. If there's a
-// currently active transaction, this will return a non-transactional connection
-// to the datastore, otherwise this is the same as GetRaw.
-func GetRawNoTxn(c context.Context) RawInterface {
- return getFiltered(c, false)
-}
-
-// Get gets the Interface implementation from context.
-func Get(c context.Context) Interface {
- inf := info.Get(c)
- ns, _ := inf.GetNamespace()
- return &datastoreImpl{
- GetRaw(c),
- inf.FullyQualifiedAppID(),
- ns,
- }
-}
-
-// GetNoTxn gets the Interface implementation from context. If there's a
-// currently active transaction, this will return a non-transactional connection
-// to the datastore, otherwise this is the same as GetRaw.
-// Get gets the Interface implementation from context.
-func GetNoTxn(c context.Context) Interface {
- inf := info.Get(c)
- ns, _ := inf.GetNamespace()
- return &datastoreImpl{
- GetRawNoTxn(c),
- inf.FullyQualifiedAppID(),
- ns,
- }
+// Raw gets the RawInterface implementation from context.
+func Raw(c context.Context) RawInterface {
+ return getFiltered(c)
}
// SetRawFactory sets the function to produce Datastore instances, as returned by
-// the GetRaw method.
+// the Raw method.
func SetRawFactory(c context.Context, rdsf RawFactory) context.Context {
return context.WithValue(c, rawDatastoreKey, rdsf)
}
@@ -96,7 +63,7 @@ func SetRawFactory(c context.Context, rdsf RawFactory) context.Context {
// with a quick mock. This is just a shorthand SetRawFactory invocation to set
// a factory which always returns the same object.
func SetRaw(c context.Context, rds RawInterface) context.Context {
- return SetRawFactory(c, func(context.Context, bool) RawInterface { return rds })
+ return SetRawFactory(c, func(context.Context) RawInterface { return rds })
}
func getCurFilters(c context.Context) []RawFilter {
@@ -118,3 +85,10 @@ func AddRawFilters(c context.Context, filts ...RawFilter) context.Context {
newFilts = append(newFilts, filts...)
return context.WithValue(c, rawDatastoreFilterKey, newFilts)
}
+
+// GetKeyContext returns the KeyContext whose AppID and Namespace match those
+// installed in the supplied Context.
+func GetKeyContext(c context.Context) KeyContext {
+ ri := info.Raw(c)
+ return KeyContext{ri.FullyQualifiedAppID(), ri.GetNamespace()}
+}
« no previous file with comments | « service/datastore/checkfilter_test.go ('k') | service/datastore/context_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698