Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Saller <bcsaller@objectrealms.net>2007-10-22 22:22:17 (GMT)
committer Benjamin Saller <bcsaller@objectrealms.net>2007-10-22 22:22:17 (GMT)
commit6ca46fa4c79549b2b2d5b0e51ed729c460c19ed4 (patch)
treeacbd2796725356d3303436e48d51749652373eb8
parent5dc7f8f6322ba595849dad9faaccb61c82b3ab2f (diff)
ids(mountpoint) -> list of ids on that mountpoint
-rw-r--r--src/olpc/datastore/backingstore.py3
-rw-r--r--src/olpc/datastore/datastore.py12
-rw-r--r--src/olpc/datastore/xapianindex.py4
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