blob: 7edf5ee0ba9b24751aa29ceabd905035e4a3ade8 [file] [log] [blame]
# 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
BLOB_REFERENCE_BLOBSTORE = 'BlobReferenceBlobstore'
class _Model(db.Model):
key_ = db.StringProperty()
value = BlobReferenceProperty()
class BlobReferenceStore(object):
"""A wrapper around the datastore API that can store blob keys.
"""
def _Query(self, namespace, key):
return _Model.gql('WHERE key_ = :1', self._MakeKey(namespace, key)).get()
def _MakeKey(self, namespace, key):
return '.'.join((namespace, key))
def Set(self, namespace, key, value):
_Model(key_=self._MakeKey(namespace, key), value=value).put()
def Get(self, namespace, key):
result = self._Query(namespace, key)
if not result:
return None
return result.value
def Delete(self, namespace, key):
result = self._Query(namespace, key)
if not result:
return None
blob_key = result.value
result.delete()
return blob_key