Abstract method to build gps related subquery
[wifihood] / wifimap / db.py
index 92fd45b..f0733a7 100644 (file)
@@ -49,6 +49,10 @@ class database :
         rc = self.db.execute( query )
         return rc.fetchone()
 
+    def __extend_query ( self , gps ) :
+        lat , lon , alt = gps
+        return "lat=lat+%f , lat2=lat2+%f , lon=lon+%f , lon2=lon2+%f , alt=alt+%f , alt2=alt2+%f" % ( lat , lat*lat , lon , lon*lon , alt , alt*alt )
+
     def add ( self , mac , rss , timestamp , gps=None ) :
   
         query = "INSERT INTO ap ( mac , rss , last_seen ) VALUES ( '%s' , %d , %f )" % ( mac , rss , timestamp )
@@ -56,7 +60,7 @@ class database :
         if rc.rowcount :
             if gps :
                 lat , lon , alt = gps
-                query = "UPDATE ap SET n=1 , lat=%f , lat2=%f , lon=%f , lon2=%f , alt=%f , alt2=%f WHERE mac='%s'" % ( lat , lat*lat , lon , lon*lon , alt , alt*alt , mac )
+                query = "UPDATE ap SET n=1 , %s WHERE mac='%s'" % ( self.__extend_query(gps) , mac )
                 rc = self.db.execute( query )
             self.db.commit()
 
@@ -65,7 +69,7 @@ class database :
         query = "UPDATE ap set rss=%d , last_seen=%f" % ( rss , timestamp )
         if gps :
             lat , lon , alt = gps
-            query += " , n=n+1 , lat=lat+%f , lat2=lat2+%f , lon=lon+%f , lon2=lon2+%f , alt=alt+%f , alt2=alt2+%f" % ( lat , lat*lat , lon , lon*lon , alt , alt*alt )
+            query += " , n=n+1 , %s" % self.__extend_query(gps)
         query += " WHERE mac='%s'" % mac
         rc = self.db.execute( query )
         if rc.rowcount :