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

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

Issue 1243323002: Refactor a bit. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: fix golint 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 unified diff | Download patch
« no previous file with comments | « impl/memory/plist_test.go ('k') | impl/memory/raw_datastore_data.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 memory 5 package memory
6 6
7 import ( 7 import (
8 "errors" 8 "errors"
9 9
10 "golang.org/x/net/context" 10 "golang.org/x/net/context"
11 11
12 » "github.com/luci/gae" 12 » rds "github.com/luci/gae/service/rawdatastore"
13 » "github.com/luci/gae/helper"
14 ) 13 )
15 14
16 //////////////////////////////////// public //////////////////////////////////// 15 //////////////////////////////////// public ////////////////////////////////////
17 16
18 // useRDS adds a gae.Datastore implementation to context, accessible 17 // useRDS adds a gae.Datastore implementation to context, accessible
19 // by gae.GetDS(c) 18 // by gae.GetDS(c)
20 func useRDS(c context.Context) context.Context { 19 func useRDS(c context.Context) context.Context {
21 » return gae.SetRDSFactory(c, func(ic context.Context) gae.RawDatastore { 20 » return rds.SetFactory(c, func(ic context.Context) rds.Interface {
22 dsd := cur(ic).Get(memContextDSIdx) 21 dsd := cur(ic).Get(memContextDSIdx)
23 22
24 ns := curGID(ic).namespace 23 ns := curGID(ic).namespace
25 if x, ok := dsd.(*dataStoreData); ok { 24 if x, ok := dsd.(*dataStoreData); ok {
26 return &dsImpl{x, ns, ic} 25 return &dsImpl{x, ns, ic}
27 } 26 }
28 return &txnDsImpl{dsd.(*txnDataStoreData), ns} 27 return &txnDsImpl{dsd.(*txnDataStoreData), ns}
29 }) 28 })
30 } 29 }
31 30
32 //////////////////////////////////// dsImpl //////////////////////////////////// 31 //////////////////////////////////// dsImpl ////////////////////////////////////
33 32
34 // dsImpl exists solely to bind the current c to the datastore data. 33 // dsImpl exists solely to bind the current c to the datastore data.
35 type dsImpl struct { 34 type dsImpl struct {
36 data *dataStoreData 35 data *dataStoreData
37 ns string 36 ns string
38 c context.Context 37 c context.Context
39 } 38 }
40 39
41 var _ gae.RawDatastore = (*dsImpl)(nil) 40 var _ rds.Interface = (*dsImpl)(nil)
42 41
43 func (d *dsImpl) DecodeKey(encoded string) (gae.DSKey, error) { 42 func (d *dsImpl) DecodeKey(encoded string) (rds.Key, error) {
44 » return helper.NewDSKeyFromEncoded(encoded) 43 » return rds.NewKeyFromEncoded(encoded)
45 } 44 }
46 45
47 func (d *dsImpl) NewKey(kind, stringID string, intID int64, parent gae.DSKey) ga e.DSKey { 46 func (d *dsImpl) NewKey(kind, stringID string, intID int64, parent rds.Key) rds. Key {
48 » return helper.NewDSKey(globalAppID, d.ns, kind, stringID, intID, parent) 47 » return rds.NewKey(globalAppID, d.ns, kind, stringID, intID, parent)
49 } 48 }
50 49
51 func (d *dsImpl) Put(key gae.DSKey, pls gae.DSPropertyLoadSaver) (gae.DSKey, err or) { 50 func (d *dsImpl) Put(key rds.Key, pls rds.PropertyLoadSaver) (rds.Key, error) {
52 return d.data.put(d.ns, key, pls) 51 return d.data.put(d.ns, key, pls)
53 } 52 }
54 53
55 func (d *dsImpl) PutMulti(keys []gae.DSKey, plss []gae.DSPropertyLoadSaver) ([]g ae.DSKey, error) { 54 func (d *dsImpl) PutMulti(keys []rds.Key, plss []rds.PropertyLoadSaver) ([]rds.K ey, error) {
56 return d.data.putMulti(d.ns, keys, plss) 55 return d.data.putMulti(d.ns, keys, plss)
57 } 56 }
58 57
59 func (d *dsImpl) Get(key gae.DSKey, pls gae.DSPropertyLoadSaver) error { 58 func (d *dsImpl) Get(key rds.Key, pls rds.PropertyLoadSaver) error {
60 return d.data.get(d.ns, key, pls) 59 return d.data.get(d.ns, key, pls)
61 } 60 }
62 61
63 func (d *dsImpl) GetMulti(keys []gae.DSKey, plss []gae.DSPropertyLoadSaver) erro r { 62 func (d *dsImpl) GetMulti(keys []rds.Key, plss []rds.PropertyLoadSaver) error {
64 return d.data.getMulti(d.ns, keys, plss) 63 return d.data.getMulti(d.ns, keys, plss)
65 } 64 }
66 65
67 func (d *dsImpl) Delete(key gae.DSKey) error { 66 func (d *dsImpl) Delete(key rds.Key) error {
68 return d.data.del(d.ns, key) 67 return d.data.del(d.ns, key)
69 } 68 }
70 69
71 func (d *dsImpl) DeleteMulti(keys []gae.DSKey) error { 70 func (d *dsImpl) DeleteMulti(keys []rds.Key) error {
72 return d.data.delMulti(d.ns, keys) 71 return d.data.delMulti(d.ns, keys)
73 } 72 }
74 73
75 func (d *dsImpl) NewQuery(kind string) gae.DSQuery { 74 func (d *dsImpl) NewQuery(kind string) rds.Query {
76 return &queryImpl{ns: d.ns, kind: kind} 75 return &queryImpl{ns: d.ns, kind: kind}
77 } 76 }
78 77
79 func (d *dsImpl) Run(q gae.DSQuery) gae.RDSIterator { 78 func (d *dsImpl) Run(q rds.Query) rds.Iterator {
80 rq := q.(*queryImpl) 79 rq := q.(*queryImpl)
81 rq = rq.normalize().checkCorrectness(d.ns, false) 80 rq = rq.normalize().checkCorrectness(d.ns, false)
82 return &queryIterImpl{rq} 81 return &queryIterImpl{rq}
83 } 82 }
84 83
85 func (d *dsImpl) GetAll(q gae.DSQuery, dst *[]gae.DSPropertyMap) ([]gae.DSKey, e rror) { 84 func (d *dsImpl) GetAll(q rds.Query, dst *[]rds.PropertyMap) ([]rds.Key, error) {
86 // TODO(riannucci): assert that dst is a slice of structs 85 // TODO(riannucci): assert that dst is a slice of structs
87 panic("NOT IMPLEMENTED") 86 panic("NOT IMPLEMENTED")
88 } 87 }
89 88
90 func (d *dsImpl) Count(q gae.DSQuery) (int, error) { 89 func (d *dsImpl) Count(q rds.Query) (int, error) {
91 return count(d.Run(q.KeysOnly())) 90 return count(d.Run(q.KeysOnly()))
92 } 91 }
93 92
94 ////////////////////////////////// txnDsImpl /////////////////////////////////// 93 ////////////////////////////////// txnDsImpl ///////////////////////////////////
95 94
96 type txnDsImpl struct { 95 type txnDsImpl struct {
97 data *txnDataStoreData 96 data *txnDataStoreData
98 ns string 97 ns string
99 } 98 }
100 99
101 var _ gae.RawDatastore = (*txnDsImpl)(nil) 100 var _ rds.Interface = (*txnDsImpl)(nil)
102 101
103 func (d *txnDsImpl) DecodeKey(encoded string) (gae.DSKey, error) { 102 func (d *txnDsImpl) DecodeKey(encoded string) (rds.Key, error) {
104 » return helper.NewDSKeyFromEncoded(encoded) 103 » return rds.NewKeyFromEncoded(encoded)
105 } 104 }
106 105
107 func (d *txnDsImpl) NewKey(kind, stringID string, intID int64, parent gae.DSKey) gae.DSKey { 106 func (d *txnDsImpl) NewKey(kind, stringID string, intID int64, parent rds.Key) r ds.Key {
108 » return helper.NewDSKey(globalAppID, d.ns, kind, stringID, intID, parent) 107 » return rds.NewKey(globalAppID, d.ns, kind, stringID, intID, parent)
109 } 108 }
110 109
111 func (d *txnDsImpl) Put(key gae.DSKey, pls gae.DSPropertyLoadSaver) (retKey gae. DSKey, err error) { 110 func (d *txnDsImpl) Put(key rds.Key, pls rds.PropertyLoadSaver) (retKey rds.Key, err error) {
112 err = d.data.run(func() (err error) { 111 err = d.data.run(func() (err error) {
113 retKey, err = d.data.put(d.ns, key, pls) 112 retKey, err = d.data.put(d.ns, key, pls)
114 return 113 return
115 }) 114 })
116 return 115 return
117 } 116 }
118 117
119 func (d *txnDsImpl) PutMulti(keys []gae.DSKey, plss []gae.DSPropertyLoadSaver) ( retKeys []gae.DSKey, err error) { 118 func (d *txnDsImpl) PutMulti(keys []rds.Key, plss []rds.PropertyLoadSaver) (retK eys []rds.Key, err error) {
120 err = d.data.run(func() (err error) { 119 err = d.data.run(func() (err error) {
121 retKeys, err = d.data.putMulti(d.ns, keys, plss) 120 retKeys, err = d.data.putMulti(d.ns, keys, plss)
122 return 121 return
123 }) 122 })
124 return 123 return
125 } 124 }
126 125
127 func (d *txnDsImpl) Get(key gae.DSKey, pls gae.DSPropertyLoadSaver) error { 126 func (d *txnDsImpl) Get(key rds.Key, pls rds.PropertyLoadSaver) error {
128 return d.data.run(func() error { 127 return d.data.run(func() error {
129 return d.data.get(d.ns, key, pls) 128 return d.data.get(d.ns, key, pls)
130 }) 129 })
131 } 130 }
132 131
133 func (d *txnDsImpl) GetMulti(keys []gae.DSKey, plss []gae.DSPropertyLoadSaver) e rror { 132 func (d *txnDsImpl) GetMulti(keys []rds.Key, plss []rds.PropertyLoadSaver) error {
134 return d.data.run(func() error { 133 return d.data.run(func() error {
135 return d.data.getMulti(d.ns, keys, plss) 134 return d.data.getMulti(d.ns, keys, plss)
136 }) 135 })
137 } 136 }
138 137
139 func (d *txnDsImpl) Delete(key gae.DSKey) error { 138 func (d *txnDsImpl) Delete(key rds.Key) error {
140 return d.data.run(func() error { 139 return d.data.run(func() error {
141 return d.data.del(d.ns, key) 140 return d.data.del(d.ns, key)
142 }) 141 })
143 } 142 }
144 143
145 func (d *txnDsImpl) DeleteMulti(keys []gae.DSKey) error { 144 func (d *txnDsImpl) DeleteMulti(keys []rds.Key) error {
146 return d.data.run(func() error { 145 return d.data.run(func() error {
147 return d.data.delMulti(d.ns, keys) 146 return d.data.delMulti(d.ns, keys)
148 }) 147 })
149 } 148 }
150 149
151 func (d *txnDsImpl) Run(q gae.DSQuery) gae.RDSIterator { 150 func (d *txnDsImpl) Run(q rds.Query) rds.Iterator {
152 rq := q.(*queryImpl) 151 rq := q.(*queryImpl)
153 if rq.ancestor == nil { 152 if rq.ancestor == nil {
154 rq.err = errors.New("memory: queries in transactions only suppor t ancestor queries") 153 rq.err = errors.New("memory: queries in transactions only suppor t ancestor queries")
155 return &queryIterImpl{rq} 154 return &queryIterImpl{rq}
156 } 155 }
157 panic("NOT IMPLEMENTED") 156 panic("NOT IMPLEMENTED")
158 } 157 }
159 158
160 func (*txnDsImpl) RunInTransaction(func(c context.Context) error, *gae.DSTransac tionOptions) error { 159 func (*txnDsImpl) RunInTransaction(func(c context.Context) error, *rds.Transacti onOptions) error {
161 return errors.New("datastore: nested transactions are not supported") 160 return errors.New("datastore: nested transactions are not supported")
162 } 161 }
163 162
164 func (d *txnDsImpl) NewQuery(kind string) gae.DSQuery { 163 func (d *txnDsImpl) NewQuery(kind string) rds.Query {
165 return &queryImpl{ns: d.ns, kind: kind} 164 return &queryImpl{ns: d.ns, kind: kind}
166 } 165 }
167 166
168 func (d *txnDsImpl) GetAll(q gae.DSQuery, dst *[]gae.DSPropertyMap) ([]gae.DSKey , error) { 167 func (d *txnDsImpl) GetAll(q rds.Query, dst *[]rds.PropertyMap) ([]rds.Key, erro r) {
169 // TODO(riannucci): assert that dst is a slice of structs 168 // TODO(riannucci): assert that dst is a slice of structs
170 panic("NOT IMPLEMENTED") 169 panic("NOT IMPLEMENTED")
171 } 170 }
172 171
173 func (d *txnDsImpl) Count(q gae.DSQuery) (int, error) { 172 func (d *txnDsImpl) Count(q rds.Query) (int, error) {
174 return count(d.Run(q.KeysOnly())) 173 return count(d.Run(q.KeysOnly()))
175 } 174 }
176 175
177 func count(itr gae.RDSIterator) (ret int, err error) { 176 func count(itr rds.Iterator) (ret int, err error) {
178 for _, err = itr.Next(nil); err != nil; _, err = itr.Next(nil) { 177 for _, err = itr.Next(nil); err != nil; _, err = itr.Next(nil) {
179 ret++ 178 ret++
180 } 179 }
181 » if err == gae.ErrDSQueryDone { 180 » if err == rds.ErrQueryDone {
182 err = nil 181 err = nil
183 } 182 }
184 return 183 return
185 } 184 }
OLDNEW
« no previous file with comments | « impl/memory/plist_test.go ('k') | impl/memory/raw_datastore_data.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698