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

Side by Side Diff: go/src/infra/gae/libs/wrapper/gae/datastore.go

Issue 1151473003: Better attempt at an appengine wrapper. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: typo Created 5 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package gae
6
7 import (
8 "golang.org/x/net/context"
9
10 "appengine/datastore"
11
12 "github.com/mjibson/goon"
13
14 "infra/gae/libs/wrapper"
15 )
16
17 // UseDS adds a wrapper.Datastore implementation to context, accessible
18 // by wrapper.DS(c)
Vadim Sh. 2015/05/24 19:01:57 wrapper.GetDS(c)?
iannucci 2015/05/24 20:04:31 ah, oops. Fixed.
19 func UseDS(c context.Context) context.Context {
20 return wrapper.SetDSFactory(c, func(ci context.Context) wrapper.Datastor e {
21 return dsImpl{ctx(ci), ci}
Vadim Sh. 2015/05/24 19:01:57 how do you choose when to put (or not to put) & wh
iannucci 2015/05/24 20:04:31 Not sure I understand what you mean?
Vadim Sh. 2015/05/24 20:15:36 I would have written: return &dsImpl{ctx(ci), ci}
22 })
23 }
24
25 ////////// Query
26
27 type queryImpl struct{ *datastore.Query }
28
29 func (q queryImpl) Distinct() wrapper.DSQuery { return queryImpl{q.Query.Distinc t()} }
30 func (q queryImpl) End(c wrapper.DSCursor) wrapper.DSQuery {
31 return queryImpl{q.Query.End(c.(datastore.Cursor))}
32 }
33 func (q queryImpl) EventualConsistency() wrapper.DSQuery {
34 return queryImpl{q.Query.EventualConsistency()}
35 }
36 func (q queryImpl) KeysOnly() wrapper.DSQuery { return queryImpl{q. Query.KeysOnly()} }
37 func (q queryImpl) Limit(limit int) wrapper.DSQuery { return queryImpl{q. Query.Limit(limit)} }
38 func (q queryImpl) Offset(offset int) wrapper.DSQuery { return queryImpl{q. Query.Offset(offset)} }
39 func (q queryImpl) Order(fieldName string) wrapper.DSQuery { return queryImpl{q. Query.Order(fieldName)} }
40 func (q queryImpl) Start(c wrapper.DSCursor) wrapper.DSQuery {
41 return queryImpl{q.Query.Start(c.(datastore.Cursor))}
42 }
43 func (q queryImpl) Ancestor(ancestor *datastore.Key) wrapper.DSQuery {
44 return queryImpl{q.Query.Ancestor(ancestor)}
45 }
46 func (q queryImpl) Project(fieldNames ...string) wrapper.DSQuery {
47 return queryImpl{q.Query.Project(fieldNames...)}
48 }
49 func (q queryImpl) Filter(filterStr string, value interface{}) wrapper.DSQuery {
50 return queryImpl{q.Query.Filter(filterStr, value)}
51 }
52
53 ////////// Iterator
54
55 type iteratorImpl struct{ *goon.Iterator }
56
57 func (i iteratorImpl) Cursor() (wrapper.DSCursor, error) { return i.Iterator.Cur sor() }
58
59 ////////// Datastore
60
61 type dsImpl struct {
62 *goon.Goon
63 c context.Context
64 }
65
66 // logger
67 func (g dsImpl) Debugf(format string, args ...interface{}) { g.Goon.Context.De bugf(format, args...) }
68 func (g dsImpl) Infof(format string, args ...interface{}) { g.Goon.Context.In fof(format, args...) }
69 func (g dsImpl) Warningf(format string, args ...interface{}) { g.Goon.Context.Wa rningf(format, args...) }
70 func (g dsImpl) Errorf(format string, args ...interface{}) { g.Goon.Context.Er rorf(format, args...) }
71
72 // Kinder
73 func (g dsImpl) KindNameResolver() goon.KindNameResolver { return g.Goon.K indNameResolver }
74 func (g dsImpl) SetKindNameResolver(knr goon.KindNameResolver) { g.Goon.KindName Resolver = knr }
75
76 // NewKeyer
77 func (g dsImpl) NewKey(kind, stringID string, intID int64, parent *datastore.Key ) *datastore.Key {
78 return datastore.NewKey(g.Goon.Context, kind, stringID, intID, parent)
79 }
80 func (g dsImpl) NewKeyObj(obj interface{}) *datastore.Key { return g.Key(obj) }
81 func (g dsImpl) NewKeyObjError(obj interface{}) (*datastore.Key, error) { return g.KeyError(obj) }
82
83 // DSQueryer
84 func (g dsImpl) NewQuery(kind string) wrapper.DSQuery { return queryImpl{datasto re.NewQuery(kind)} }
85 func (g dsImpl) Run(q wrapper.DSQuery) wrapper.DSIterator {
86 return iteratorImpl{g.Goon.Run(q.(queryImpl).Query)}
87 }
88 func (g dsImpl) Count(q wrapper.DSQuery) (int, error) { return g.Goon.Count(q.(q ueryImpl).Query) }
89 func (g dsImpl) GetAll(q wrapper.DSQuery, dst interface{}) ([]*datastore.Key, er ror) {
90 return g.Goon.GetAll(q.(queryImpl).Query, dst)
91 }
92
93 // Transactioner
94 func (g dsImpl) RunInTransaction(f func(c context.Context) error, opts *datastor e.TransactionOptions) error {
95 return g.Goon.RunInTransaction(func(ig *goon.Goon) error {
96 return f(context.WithValue(g.c, goonContextKey, ig))
97 }, (*datastore.TransactionOptions)(opts))
98 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698