diff options
-rw-r--r-- | gdatastore/datastore.py | 5 | ||||
-rw-r--r-- | gdatastore/index.py | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gdatastore/datastore.py b/gdatastore/datastore.py index 6f5a011..d1457aa 100644 --- a/gdatastore/datastore.py +++ b/gdatastore/datastore.py @@ -315,7 +315,10 @@ class InternalApi(object): def find_unique_values(self, query, name): logging.debug('find_unique_values(%r, %r)', query, name) - return ['org.sugarlabs.DataStoreTest1', 'org.sugarlabs.DataStoreTest2'] + if query: + raise NotImplementedError('non-empty query not supported yet') + + return self._index.find_unique_values(name) def save(self, tree_id, parent_id, metadata, path, delete_after, async_cb, async_err_cb): diff --git a/gdatastore/index.py b/gdatastore/index.py index 177a300..9b43541 100644 --- a/gdatastore/index.py +++ b/gdatastore/index.py @@ -304,6 +304,15 @@ class Index(object): return entries, total_count + def find_unique_values(self, property): + if property in _STANDARD_TERMS: + prefix = _PREFIX_FULL_VALUE + _STANDARD_TERMS[property]['prefix'] + else: + prefix = _PREFIX_FULL_VALUE + _prefix_for_unknown(property) + + return [term.term[len(prefix):] + for term in self._database.allterms(prefix)] + def retrieve(self, object_id): postings = self._database.postlist(_object_id_term(object_id)) document = self._database.get_document(postings.next().docid) |