added return to Access and Writer select methods
authorMarius Sandu-Popa <sandupopamarius@gmail.com>
Fri, 6 Nov 2009 15:58:17 +0000 (17:58 +0200)
committerMarius Sandu-Popa <sandupopamarius@gmail.com>
Fri, 6 Nov 2009 15:58:29 +0000 (17:58 +0200)
auto/db/DatabaseAccess.py
auto/db/DatabaseWriter.py

index d587b82..31e925d 100644 (file)
@@ -16,7 +16,8 @@ class DatabaseAccess:
         insert_swarms - row fields to be added are passed as separate
                         arguments
     """
-
+    operators={'eq':'=', 'neq':'<>', 'gt':'>', 'gte':'>=', 'lt':'<', 'lte':'<=', 'lk':'LIKE'}
+    
     def __init__ (self, dbname):
         self.dbname = dbname
 
@@ -208,13 +209,24 @@ class DatabaseAccess:
     def insert_status_messages(self, cs_id, timestamp, peer_num, dht, download_speed, upload_speed, download_size, upload_size, eta):
         self.insert_status_messages_row([cs_id, timestamp, peer_num, dht, download_speed, upload_speed, download_size, upload_size, eta])
 
-    def select_status_messages(self, show = True, cs_id = -1):
+    def select_status_messages(self, show = True, cs_id = -1, restrictArray=None):
         try:
             if cs_id == -1:
                 self.cursor.execute("select * from status_messages")
             else:
-                self.cursor.execute("select * from status_messages where cs_id=?", (cs_id, ))
-            if show == True:
+               values = (cs_id, )
+               query = "select * from status_messages where cs_id=? and "
+               
+               if restrictArray:
+                   for (key, value, op) in restrictArray:
+                       query += "%s %s ? and " % (key, self.operators[op]) 
+                       values += (value, )
+               
+               query = query.strip('and ')
+               print query, values
+               self.cursor.execute(query, values)
+               
+           if show == True:
                 for row in self.cursor:
                     print row
             else:
@@ -243,14 +255,24 @@ class DatabaseAccess:
 
     def insert_verbose_messages(self, cs_id, timestamp, peer_ip, peer_port, message_type, _index, begin, length, listen_port):
         self.insert_verbose_messages_row([cs_id, timestamp, peer_ip, peer_port, message_type, _index, begin, length, listen_port])
-
-    def select_verbose_messages(self, show = True, cs_id = -1):
+    
+    def select_verbose_messages(self, show = True, cs_id = -1, restrictArray=None):
         try:
             if cs_id == -1:
                 self.cursor.execute("select * from verbose_messages")
             else:
-                self.cursor.execute("select * from verbose_messages where cs_id=?", (cs_id, ))
-            if show == True:
+               values = (cs_id, )
+               query = "select * from verbose_messages where cs_id=? and "
+               if restrictArray:
+                   for (key, value, op) in restrictArray:
+                       query += "%s %s ? and " % (key, self.operators[op]) 
+                       values += (value, )
+               
+               query = query.strip('and ')
+               #print query, values
+               self.cursor.execute(query, values)
+               
+           if show == True:
                 for row in self.cursor:
                     print row
             else:
index ab7a733..a9d2284 100644 (file)
@@ -35,13 +35,13 @@ class DatabaseWriter:
         self.dba.select_status_messages(True, cs_id)
 
     def select_status_messages(self, cs_id = -1):
-        self.dba.select_status_messages(False, cs_id)
+        return self.dba.select_status_messages(False, cs_id)
 
     def show_verbose_messages(self, cs_id = -1):
         self.dba.select_verbose_messages(True, cs_id)
 
     def select_verbose_messages(self, cs_id = -1):
-        self.dba.select_verbose_messages(False, cs_id)
+        return self.dba.select_verbose_messages(False, cs_id)
 
     def delete_status_messages(self, cs_id = -1):
         self.dba.delete_status_messages(cs_id)