diff options
author | Benjamin Saller <bcsaller@objectrealms.net> | 2007-10-22 22:22:17 (GMT) |
---|---|---|
committer | Benjamin Saller <bcsaller@objectrealms.net> | 2007-10-22 22:22:17 (GMT) |
commit | 6ca46fa4c79549b2b2d5b0e51ed729c460c19ed4 (patch) | |
tree | acbd2796725356d3303436e48d51749652373eb8 | |
parent | 5dc7f8f6322ba595849dad9faaccb61c82b3ab2f (diff) |
ids(mountpoint) -> list of ids on that mountpoint
-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 |