]> www.average.org Git - loctrkd.git/blobdiff - gps303/evstore.py
WIP retoure messaging
[loctrkd.git] / gps303 / evstore.py
index c10ecb17e5d7a191d7bf75a76e768138cc9c2755..76173624bed9069359f202f46d07e0eba3cc8491 100644 (file)
@@ -1,6 +1,6 @@
 """ sqlite event store """
 
-from sqlite3 import connect
+from sqlite3 import connect, OperationalError
 
 __all__ = "fetch", "initdb", "stow"
 
@@ -10,6 +10,7 @@ SCHEMA = """create table if not exists events (
     tstamp real not null,
     imei text,
     peeraddr text not null,
+    is_incoming int not null default TRUE,
     proto int not null,
     packet blob
 )"""
@@ -18,7 +19,11 @@ SCHEMA = """create table if not exists events (
 def initdb(dbname):
     global DB
     DB = connect(dbname)
-    DB.execute(SCHEMA)
+    try:
+        DB.execute("""alter table events add column
+                is_incoming int not null default TRUE""")
+    except OperationalError:
+        DB.execute(SCHEMA)
 
 
 def stow(**kwargs):
@@ -26,6 +31,7 @@ def stow(**kwargs):
     parms = {
         k: kwargs[k] if k in kwargs else v
         for k, v in (
+            ("is_incoming", True),
             ("peeraddr", None),
             ("when", 0.0),
             ("imei", None),
@@ -36,9 +42,9 @@ def stow(**kwargs):
     assert len(kwargs) <= len(parms)
     DB.execute(
         """insert or ignore into events
-                (tstamp, imei, peeraddr, proto, packet)
+                (tstamp, imei, peeraddr, proto, packet, is_incoming)
                 values
-                (:when, :imei, :peeraddr, :proto, :packet)
+                (:when, :imei, :peeraddr, :proto, :packet, :is_incoming)
         """,
         parms,
     )