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

Side by Side Diff: chrome/common/extensions/docs/server2/persistent_object_store_appengine.py

Issue 1151283007: Docserver overhaul: Gitiles away from me. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove inform_users template to fix presubmit failure (it's now a redirect) Created 5 years, 6 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
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 from appengine_wrappers import db 5 import google.appengine.ext.db as db
6
6 from datastore_models import PersistentObjectStoreItem 7 from datastore_models import PersistentObjectStoreItem
7 from environment import IsDevServer 8 from environment import IsDevServer
8 from future import All, Future 9 from future import All, Future
9 from object_store import ObjectStore 10 from object_store import ObjectStore
10 11
11 12
12 class PersistentObjectStore(ObjectStore): 13 class PersistentObjectStoreAppengine(ObjectStore):
13 '''Stores data persistently using the AppEngine Datastore API. 14 '''Stores or retrieves persistent data using the AppEngine Datastore API.
14 ''' 15 '''
15 def __init__(self, namespace): 16 def __init__(self, namespace):
16 self._namespace = namespace 17 self._namespace = namespace
17 18
18 def SetMulti(self, mapping): 19 def SetMulti(self, mapping):
19 rpcs = [db.put_async( 20 entities = [PersistentObjectStoreItem.CreateItem(
20 PersistentObjectStoreItem.CreateItem(self._namespace, key, value)) 21 self._namespace, key, value)
21 for key, value in mapping.iteritems()] 22 for key, value in mapping.iteritems()]
23 # Some entites may be None if they were too large to insert. Skip those.
24 rpcs = [db.put_async(entity for entity in entities if entity)]
22 # If running the dev server, the futures don't complete until the server is 25 # If running the dev server, the futures don't complete until the server is
23 # *quitting*. This is annoying. Flush now. 26 # *quitting*. This is annoying. Flush now.
24 if IsDevServer(): 27 if IsDevServer():
25 [rpc.wait() for rpc in rpcs] 28 [rpc.wait() for rpc in rpcs]
26 return All(Future(callback=lambda: rpc.get_result()) for rpc in rpcs) 29 return All(Future(callback=lambda: rpc.get_result()) for rpc in rpcs)
27 30
28 def GetMulti(self, keys): 31 def GetMulti(self, keys):
29 db_futures = dict( 32 db_futures = dict((k, db.get_async(
30 (k, db.get_async( 33 PersistentObjectStoreItem.CreateKey(self._namespace, k)))
31 PersistentObjectStoreItem.CreateKey(self._namespace, k)))
32 for k in keys) 34 for k in keys)
33 def resolve(): 35 def resolve():
34 return dict((key, future.get_result().GetValue()) 36 return dict((key, future.get_result().GetValue())
35 for key, future in db_futures.iteritems() 37 for key, future in db_futures.iteritems()
36 if future.get_result() is not None) 38 if future.get_result() is not None)
37 return Future(callback=resolve) 39 return Future(callback=resolve)
38 40
39 def DelMulti(self, keys): 41 def DelMulti(self, keys):
40 futures = [] 42 futures = []
41 for key in keys: 43 for key in keys:
42 futures.append(db.delete_async( 44 futures.append(db.delete_async(
43 PersistentObjectStoreItem.CreateKey(self._namespace, key))) 45 PersistentObjectStoreItem.CreateKey(self._namespace, key)))
44 # If running the dev server, the futures don't complete until the server is 46 # If running the dev server, the futures don't complete until the server is
45 # *quitting*. This is annoying. Flush now. 47 # *quitting*. This is annoying. Flush now.
46 if IsDevServer(): 48 if IsDevServer():
47 [future.wait() for future in futures] 49 [future.wait() for future in futures]
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698