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

Side by Side Diff: impl/prod/raw_datastore.go

Issue 1270063002: Rename rawdatastore -> datastore (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: and a bit more Created 5 years, 4 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
« no previous file with comments | « impl/prod/datastore_key.go ('k') | impl/prod/raw_datastore_type_converter.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package prod 5 package prod
6 6
7 import ( 7 import (
8 » rds "github.com/luci/gae/service/rawdatastore" 8 » ds "github.com/luci/gae/service/datastore"
9 "golang.org/x/net/context" 9 "golang.org/x/net/context"
10 "google.golang.org/appengine" 10 "google.golang.org/appengine"
11 "google.golang.org/appengine/datastore" 11 "google.golang.org/appengine/datastore"
12 ) 12 )
13 13
14 // useRDS adds a gae.RawDatastore implementation to context, accessible 14 // useRDS adds a gae.RawDatastore implementation to context, accessible
15 // by gae.GetDS(c) 15 // by gae.GetDS(c)
16 func useRDS(c context.Context) context.Context { 16 func useRDS(c context.Context) context.Context {
17 » return rds.SetFactory(c, func(ci context.Context) rds.Interface { 17 » return ds.SetFactory(c, func(ci context.Context) ds.Interface {
18 // TODO(riannucci): Track namespace in a better way 18 // TODO(riannucci): Track namespace in a better way
19 k := datastore.NewKey(ci, "kind", "", 1, nil) // get current nam espace. 19 k := datastore.NewKey(ci, "kind", "", 1, nil) // get current nam espace.
20 return rdsImpl{ci, k.Namespace()} 20 return rdsImpl{ci, k.Namespace()}
21 }) 21 })
22 } 22 }
23 23
24 ////////// Query 24 ////////// Query
25 25
26 type queryImpl struct{ *datastore.Query } 26 type queryImpl struct{ *datastore.Query }
27 27
28 func (q queryImpl) Distinct() rds.Query { 28 func (q queryImpl) Distinct() ds.Query {
29 return queryImpl{q.Query.Distinct()} 29 return queryImpl{q.Query.Distinct()}
30 } 30 }
31 func (q queryImpl) End(c rds.Cursor) rds.Query { 31 func (q queryImpl) End(c ds.Cursor) ds.Query {
32 return queryImpl{q.Query.End(c.(datastore.Cursor))} 32 return queryImpl{q.Query.End(c.(datastore.Cursor))}
33 } 33 }
34 func (q queryImpl) EventualConsistency() rds.Query { 34 func (q queryImpl) EventualConsistency() ds.Query {
35 return queryImpl{q.Query.EventualConsistency()} 35 return queryImpl{q.Query.EventualConsistency()}
36 } 36 }
37 func (q queryImpl) KeysOnly() rds.Query { 37 func (q queryImpl) KeysOnly() ds.Query {
38 return queryImpl{q.Query.KeysOnly()} 38 return queryImpl{q.Query.KeysOnly()}
39 } 39 }
40 func (q queryImpl) Limit(limit int) rds.Query { 40 func (q queryImpl) Limit(limit int) ds.Query {
41 return queryImpl{q.Query.Limit(limit)} 41 return queryImpl{q.Query.Limit(limit)}
42 } 42 }
43 func (q queryImpl) Offset(offset int) rds.Query { 43 func (q queryImpl) Offset(offset int) ds.Query {
44 return queryImpl{q.Query.Offset(offset)} 44 return queryImpl{q.Query.Offset(offset)}
45 } 45 }
46 func (q queryImpl) Order(fieldName string) rds.Query { 46 func (q queryImpl) Order(fieldName string) ds.Query {
47 return queryImpl{q.Query.Order(fieldName)} 47 return queryImpl{q.Query.Order(fieldName)}
48 } 48 }
49 func (q queryImpl) Start(c rds.Cursor) rds.Query { 49 func (q queryImpl) Start(c ds.Cursor) ds.Query {
50 return queryImpl{q.Query.Start(c.(datastore.Cursor))} 50 return queryImpl{q.Query.Start(c.(datastore.Cursor))}
51 } 51 }
52 func (q queryImpl) Ancestor(ancestor rds.Key) rds.Query { 52 func (q queryImpl) Ancestor(ancestor ds.Key) ds.Query {
53 return queryImpl{q.Query.Ancestor(dsF2R(ancestor))} 53 return queryImpl{q.Query.Ancestor(dsF2R(ancestor))}
54 } 54 }
55 func (q queryImpl) Project(fieldNames ...string) rds.Query { 55 func (q queryImpl) Project(fieldNames ...string) ds.Query {
56 return queryImpl{q.Query.Project(fieldNames...)} 56 return queryImpl{q.Query.Project(fieldNames...)}
57 } 57 }
58 func (q queryImpl) Filter(filterStr string, value interface{}) rds.Query { 58 func (q queryImpl) Filter(filterStr string, value interface{}) ds.Query {
59 return queryImpl{q.Query.Filter(filterStr, value)} 59 return queryImpl{q.Query.Filter(filterStr, value)}
60 } 60 }
61 61
62 ////////// Datastore 62 ////////// Datastore
63 63
64 type rdsImpl struct { 64 type rdsImpl struct {
65 context.Context 65 context.Context
66 66
67 ns string 67 ns string
68 } 68 }
69 69
70 func (d rdsImpl) NewKey(kind, stringID string, intID int64, parent rds.Key) rds. Key { 70 func (d rdsImpl) NewKey(kind, stringID string, intID int64, parent ds.Key) ds.Ke y {
71 return dsR2F(datastore.NewKey(d, kind, stringID, intID, dsF2R(parent))) 71 return dsR2F(datastore.NewKey(d, kind, stringID, intID, dsF2R(parent)))
72 } 72 }
73 73
74 func (rdsImpl) DecodeKey(encoded string) (rds.Key, error) { 74 func (rdsImpl) DecodeKey(encoded string) (ds.Key, error) {
75 k, err := datastore.DecodeKey(encoded) 75 k, err := datastore.DecodeKey(encoded)
76 return dsR2F(k), err 76 return dsR2F(k), err
77 } 77 }
78 78
79 func idxCallbacker(err error, amt int, cb func(idx int, err error)) error { 79 func idxCallbacker(err error, amt int, cb func(idx int, err error)) error {
80 if err == nil { 80 if err == nil {
81 for i := 0; i < amt; i++ { 81 for i := 0; i < amt; i++ {
82 cb(i, nil) 82 cb(i, nil)
83 } 83 }
84 return nil 84 return nil
85 } 85 }
86 me, ok := err.(appengine.MultiError) 86 me, ok := err.(appengine.MultiError)
87 if ok { 87 if ok {
88 for i, err := range me { 88 for i, err := range me {
89 cb(i, err) 89 cb(i, err)
90 } 90 }
91 return nil 91 return nil
92 } 92 }
93 return err 93 return err
94 } 94 }
95 95
96 func (d rdsImpl) DeleteMulti(ks []rds.Key, cb rds.DeleteMultiCB) error { 96 func (d rdsImpl) DeleteMulti(ks []ds.Key, cb ds.DeleteMultiCB) error {
97 err := datastore.DeleteMulti(d, dsMF2R(ks)) 97 err := datastore.DeleteMulti(d, dsMF2R(ks))
98 return idxCallbacker(err, len(ks), func(_ int, err error) { 98 return idxCallbacker(err, len(ks), func(_ int, err error) {
99 cb(err) 99 cb(err)
100 }) 100 })
101 } 101 }
102 102
103 func (d rdsImpl) GetMulti(keys []rds.Key, cb rds.GetMultiCB) error { 103 func (d rdsImpl) GetMulti(keys []ds.Key, cb ds.GetMultiCB) error {
104 rkeys := dsMF2R(keys) 104 rkeys := dsMF2R(keys)
105 vals := make([]datastore.PropertyLoadSaver, len(keys)) 105 vals := make([]datastore.PropertyLoadSaver, len(keys))
106 for i := range keys { 106 for i := range keys {
107 » » vals[i] = &typeFilter{rds.PropertyMap{}} 107 » » vals[i] = &typeFilter{ds.PropertyMap{}}
108 } 108 }
109 err := datastore.GetMulti(d, rkeys, vals) 109 err := datastore.GetMulti(d, rkeys, vals)
110 return idxCallbacker(err, len(keys), func(idx int, err error) { 110 return idxCallbacker(err, len(keys), func(idx int, err error) {
111 cb(vals[idx].(*typeFilter).pm, err) 111 cb(vals[idx].(*typeFilter).pm, err)
112 }) 112 })
113 } 113 }
114 114
115 func (d rdsImpl) PutMulti(keys []rds.Key, vals []rds.PropertyLoadSaver, cb rds.P utMultiCB) error { 115 func (d rdsImpl) PutMulti(keys []ds.Key, vals []ds.PropertyLoadSaver, cb ds.PutM ultiCB) error {
116 rkeys := dsMF2R(keys) 116 rkeys := dsMF2R(keys)
117 rvals := make([]datastore.PropertyLoadSaver, len(vals)) 117 rvals := make([]datastore.PropertyLoadSaver, len(vals))
118 for i, val := range vals { 118 for i, val := range vals {
119 » » rvals[i] = &typeFilter{val.(rds.PropertyMap)} 119 » » rvals[i] = &typeFilter{val.(ds.PropertyMap)}
120 } 120 }
121 rkeys, err := datastore.PutMulti(d, rkeys, vals) 121 rkeys, err := datastore.PutMulti(d, rkeys, vals)
122 return idxCallbacker(err, len(keys), func(idx int, err error) { 122 return idxCallbacker(err, len(keys), func(idx int, err error) {
123 » » k := rds.Key(nil) 123 » » k := ds.Key(nil)
124 if err == nil { 124 if err == nil {
125 k = dsR2F(rkeys[idx]) 125 k = dsR2F(rkeys[idx])
126 } 126 }
127 cb(k, err) 127 cb(k, err)
128 }) 128 })
129 } 129 }
130 130
131 func (d rdsImpl) NewQuery(kind string) rds.Query { 131 func (d rdsImpl) NewQuery(kind string) ds.Query {
132 return queryImpl{datastore.NewQuery(kind)} 132 return queryImpl{datastore.NewQuery(kind)}
133 } 133 }
134 134
135 func (d rdsImpl) Run(q rds.Query, cb rds.RunCB) error { 135 func (d rdsImpl) Run(q ds.Query, cb ds.RunCB) error {
136 tf := typeFilter{} 136 tf := typeFilter{}
137 t := q.(queryImpl).Query.Run(d) 137 t := q.(queryImpl).Query.Run(d)
138 » cfunc := func() (rds.Cursor, error) { 138 » cfunc := func() (ds.Cursor, error) {
139 return t.Cursor() 139 return t.Cursor()
140 } 140 }
141 for { 141 for {
142 k, err := t.Next(&tf) 142 k, err := t.Next(&tf)
143 if err == datastore.Done { 143 if err == datastore.Done {
144 return nil 144 return nil
145 } 145 }
146 if err != nil { 146 if err != nil {
147 return err 147 return err
148 } 148 }
149 if !cb(dsR2F(k), tf.pm, cfunc) { 149 if !cb(dsR2F(k), tf.pm, cfunc) {
150 return nil 150 return nil
151 } 151 }
152 } 152 }
153 } 153 }
154 154
155 func (d rdsImpl) RunInTransaction(f func(c context.Context) error, opts *rds.Tra nsactionOptions) error { 155 func (d rdsImpl) RunInTransaction(f func(c context.Context) error, opts *ds.Tran sactionOptions) error {
156 ropts := (*datastore.TransactionOptions)(opts) 156 ropts := (*datastore.TransactionOptions)(opts)
157 return datastore.RunInTransaction(d, f, ropts) 157 return datastore.RunInTransaction(d, f, ropts)
158 } 158 }
OLDNEW
« no previous file with comments | « impl/prod/datastore_key.go ('k') | impl/prod/raw_datastore_type_converter.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698