diff options
-rw-r--r-- | src/olpc/datastore/backingstore.py | 3 | ||||
-rw-r--r-- | src/olpc/datastore/datastore.py | 12 | ||||
-rw-r--r-- | src/olpc/datastore/xapianindex.py | 4 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/olpc/datastore/backingstore.py b/src/olpc/datastore/backingstore.py index 5b35b65..93c735d 100644 --- a/src/olpc/datastore/backingstore.py +++ b/src/olpc/datastore/backingstore.py @@ -583,6 +583,9 @@ class FileBackingStore(BackingStore): if not limit: limit = 4069 return self.indexmanager.search(query, start_index=offset, end_index=limit, order_by=order_by) + def ids(self): + return self.indexmanager.get_all_ids() + def stop(self): self.indexmanager.stop() diff --git a/src/olpc/datastore/datastore.py b/src/olpc/datastore/datastore.py index 9073845..8ed843a 100644 --- a/src/olpc/datastore/datastore.py +++ b/src/olpc/datastore/datastore.py @@ -253,6 +253,18 @@ class DataStore(dbus.service.Object): d[hit.id] = hit return d, len(d), len(results) + + @dbus.service.method(DS_DBUS_INTERFACE, + in_signature='s', + out_signature='as') + def ids(self, mountpoint=None): + """return all the ids of objects living on a given + mountpoint""" + if str(mountpoint) == "": mountpoint=None + mp = self._resolveMountpoint(mountpoint) + return mp.ids() + + #@utils.sanitize_dbus @dbus.service.method(DS_DBUS_INTERFACE, in_signature='a{sv}', diff --git a/src/olpc/datastore/xapianindex.py b/src/olpc/datastore/xapianindex.py index c1217d5..82e8644 100644 --- a/src/olpc/datastore/xapianindex.py +++ b/src/olpc/datastore/xapianindex.py @@ -431,7 +431,9 @@ class IndexManager(object): # map the result set to model.Content items return ContentMappingIter(results, self.backingstore, self.datamodel), count - + + def get_all_ids(self): + return [ti.term[1:] for ti in self.read_index._index.allterms('Q')] def get_uniquevaluesfor(self, property): # XXX: this is very sketchy code |