From b0e6e213cb5179ff3c3cd1bb0f6d08dda4b1d5d3 Mon Sep 17 00:00:00 2001 From: Sascha Silbe Date: Mon, 22 Aug 2011 13:48:43 +0000 Subject: Implement find_unique_values() Previously it returned only a fixed set of values to satisfy the test suite. --- 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) -- cgit v0.9.1