Added support for partial compound key matches.
[didex.git] / didex / values.py
index 8479d42..c2b6d1f 100644 (file)
@@ -113,6 +113,17 @@ class compound(base):
         self.parts = parts
         self.iattr = "__idx_%s_cur" % name
 
+    def minim(self, *parts):
+        return self.typ.minim(*parts)
+    def maxim(self, *parts):
+        return self.typ.maxim(*parts)
+
+    def get(self, *, partial=None, **spec):
+        if partial is not None:
+            return super().get(ge=self.minim(*partial), le = self.maxim(*partial), **spec)
+        else:
+            return super().get(**spec)
+
     def register(self, id, obj, tx):
         val = tuple(part.__get__(obj, None) for part in self.parts)
         self.index().put(val, id, tx=tx)