diff options
author | Sascha Silbe <sascha-pgp@silbe.org> | 2011-08-22 13:48:43 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2011-08-22 14:12:11 (GMT) |
commit | b0e6e213cb5179ff3c3cd1bb0f6d08dda4b1d5d3 (patch) | |
tree | 4ea7ed8d7844de44625cb7f24f3f679c50d0ca61 | |
parent | 28bace5821005637ed31b9de0cc0fa17d2be89e2 (diff) |
Implement find_unique_values()
Previously it returned only a fixed set of values to satisfy the test suite.
-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) |