MERGE : incorporate changes on cleaning branch to completelly decouple wifiview and...
[wifihood] / wifimap / db.py
index 92fd45b..e5a4c45 100644 (file)
@@ -49,23 +49,32 @@ class database :
         rc = self.db.execute( query )
         return rc.fetchone()
 
-    def add ( self , mac , rss , timestamp , gps=None ) :
+    def __extend_query ( self , gps ) :
+        query = []
+        lat , lon , alt = gps
+        if lat and lon :
+            query.append( "lat=lat+%f , lat2=lat2+%f , lon=lon+%f , lon2=lon2+%f" % ( lat , lat*lat , lon , lon*lon ) )
+        if alt :
+            query.append( "alt=alt+%f , alt2=alt2+%f" % ( alt , alt*alt ) )
+        return " , ".join( query )
+
+    def add ( self , mac , rss , timestamp , gps ) :
   
         query = "INSERT INTO ap ( mac , rss , last_seen ) VALUES ( '%s' , %d , %f )" % ( mac , rss , timestamp )
         rc = self.db.execute( query )
         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 )
+            extra = self.__extend_query(gps)
+            if extra :
+                query = "UPDATE ap SET n=1 , %s WHERE mac='%s'" % ( extra , mac )
                 rc = self.db.execute( query )
             self.db.commit()
 
-    def update ( self , mac , rss , timestamp , gps=None ) :
+    def update ( self , mac , rss , timestamp , gps ) :
 
         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 )
+        extra = self.__extend_query(gps)
+        if extra :
+            query += " , n=n+1 , %s" % extra
         query += " WHERE mac='%s'" % mac
         rc = self.db.execute( query )
         if rc.rowcount :