Chromium Code Reviews| Index: chrome/common/extensions/docs/server2/appengine_datastore.py |
| diff --git a/chrome/common/extensions/docs/server2/appengine_datastore.py b/chrome/common/extensions/docs/server2/appengine_datastore.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..aa5882d63e48f4e96f59e694f94a88efc2f9d00f |
| --- /dev/null |
| +++ b/chrome/common/extensions/docs/server2/appengine_datastore.py |
| @@ -0,0 +1,40 @@ |
| +# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +from appengine_wrappers import db |
| +from appengine_wrappers import BlobReferenceProperty |
| + |
| +DATASTORE_BLOBSTORE = 'DatastoreBlobstore' |
| + |
| +class _Model(db.Model): |
| + key_ = db.StringProperty() |
| + value = BlobReferenceProperty() |
| + |
| +class AppEngineDatastore(object): |
| + """A wrapper around the datastore API that can store blob keys. |
|
not at google - send to devlin
2012/08/09 07:52:36
AppEngineDatastore is kind of a generic name to be
cduvall
2012/08/09 19:20:08
Done.
|
| + """ |
| + def __init__(self, branch): |
| + self._branch = branch |
| + |
|
not at google - send to devlin
2012/08/09 07:52:36
nit:
def _MakeKey(self, namespace, key):
return
cduvall
2012/08/09 19:20:08
Done.
|
| + def _Query(self, key, namespace): |
| + result = _Model.gql('WHERE key_ = :1', |
| + key + '.' + self._branch + '.' + namespace).get() |
| + if not result: |
| + return None |
| + return result |
|
not at google - send to devlin
2012/08/09 07:52:36
return result?
Or just return _Model.gql...
cduvall
2012/08/09 19:20:08
Done.
|
| + |
| + def Set(self, key, value, namespace): |
|
not at google - send to devlin
2012/08/09 07:52:36
namespace is part of the key, right? So it go befo
cduvall
2012/08/09 19:20:08
Done.
|
| + _Model(key_=key + '.' + self._branch + '.' + namespace, value=value).put() |
| + |
| + def Get(self, key, namespace): |
|
not at google - send to devlin
2012/08/09 07:52:36
ditto
cduvall
2012/08/09 19:20:08
Done.
|
| + result = self._Query(key, namespace) |
| + if result is None: |
| + return None |
| + return result.value |
| + |
| + def Delete(self, key, namespace): |
| + result = self._Query(key, namespace) |
| + if result is None: |
| + return None |
| + result.delete() |