[Kimchi-devel] [PATCH] objectstore: support sorting by a key in get_list()

zhshzhou at linux.vnet.ibm.com zhshzhou at linux.vnet.ibm.com
Thu Apr 10 08:11:48 UTC 2014


From: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>

ObjectStoreSession.get_list() just returns an unsorted id list. When the
caller wants to sort the list according to a key, it has to implement
the sorting code each time. This patch implement the sorting in
objectstore to make the code re-usable.

Signed-off-by: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>
---
 src/kimchi/objectstore.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/kimchi/objectstore.py b/src/kimchi/objectstore.py
index 153b548..d355c58 100644
--- a/src/kimchi/objectstore.py
+++ b/src/kimchi/objectstore.py
@@ -38,11 +38,19 @@ class ObjectStoreSession(object):
         self.conn = conn
         self.conn.text_factory = lambda x: unicode(x, "utf-8", "ignore")
 
-    def get_list(self, obj_type):
+    def _get_list(self, obj_type):
         c = self.conn.cursor()
         res = c.execute('SELECT id FROM objects WHERE type=?', (obj_type,))
         return [x[0] for x in res]
 
+    def get_list(self, obj_type, sort_key=None):
+        ids = self._get_list(obj_type)
+        if sort_key is None:
+            return ids
+        objects = [(ident, self.get(obj_type, ident)) for ident in ids]
+        objects.sort(key=lambda (_, obj): obj[sort_key])
+        return [ident for ident, _ in objects]
+
     def get(self, obj_type, ident):
         c = self.conn.cursor()
         res = c.execute('SELECT json FROM objects WHERE type=? AND id=?',
-- 
1.8.5.3




More information about the Kimchi-devel mailing list