Chromium Code Reviews

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

Issue 1367003002: Add missing Count api (Closed) Base URL: https://github.com/luci/gae.git@move_serialization_helpers
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
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 ds "github.com/luci/gae/service/datastore" 8 ds "github.com/luci/gae/service/datastore"
9 "github.com/luci/gae/service/info" 9 "github.com/luci/gae/service/info"
10 "github.com/luci/luci-go/common/errors" 10 "github.com/luci/luci-go/common/errors"
(...skipping 164 matching lines...)
175 } 175 }
176 176
177 return ret, nil 177 return ret, nil
178 } 178 }
179 179
180 func (d rdsImpl) DecodeCursor(s string) (ds.Cursor, error) { 180 func (d rdsImpl) DecodeCursor(s string) (ds.Cursor, error) {
181 return datastore.DecodeCursor(s) 181 return datastore.DecodeCursor(s)
182 } 182 }
183 183
184 func (d rdsImpl) Run(fq *ds.FinalizedQuery, cb ds.RawRunCB) error { 184 func (d rdsImpl) Run(fq *ds.FinalizedQuery, cb ds.RawRunCB) error {
185 tf := typeFilter{}
186 q, err := d.fixQuery(fq) 185 q, err := d.fixQuery(fq)
187 if err != nil { 186 if err != nil {
188 return err 187 return err
189 } 188 }
190 189
191 t := q.Run(d) 190 t := q.Run(d)
192 191
193 cfunc := func() (ds.Cursor, error) { 192 cfunc := func() (ds.Cursor, error) {
194 return t.Cursor() 193 return t.Cursor()
195 } 194 }
195 tf := typeFilter{}
196 for { 196 for {
197 k, err := t.Next(&tf) 197 k, err := t.Next(&tf)
198 if err == datastore.Done { 198 if err == datastore.Done {
199 return nil 199 return nil
200 } 200 }
201 if err != nil { 201 if err != nil {
202 return err 202 return err
203 } 203 }
204 if !cb(dsR2F(k), tf.pm, cfunc) { 204 if !cb(dsR2F(k), tf.pm, cfunc) {
205 return nil 205 return nil
206 } 206 }
207 } 207 }
208 } 208 }
209 209
210 func (d rdsImpl) Count(fq *ds.FinalizedQuery) (int64, error) {
211 q, err := d.fixQuery(fq)
212 if err != nil {
213 return 0, err
214 }
215 ret, err := q.Count(d)
216 return int64(ret), err
217 }
218
210 func (d rdsImpl) RunInTransaction(f func(c context.Context) error, opts *ds.Tran sactionOptions) error { 219 func (d rdsImpl) RunInTransaction(f func(c context.Context) error, opts *ds.Tran sactionOptions) error {
211 ropts := (*datastore.TransactionOptions)(opts) 220 ropts := (*datastore.TransactionOptions)(opts)
212 return datastore.RunInTransaction(d, f, ropts) 221 return datastore.RunInTransaction(d, f, ropts)
213 } 222 }
214 223
215 func (d rdsImpl) Testable() ds.Testable { 224 func (d rdsImpl) Testable() ds.Testable {
216 return nil 225 return nil
217 } 226 }
OLDNEW

Powered by Google App Engine