-from logging import getLogger
-from sqlite3 import connect
+""" sqlite event store """
-__all__ = ("initdb", "stow")
+from sqlite3 import connect
-log = getLogger("gps303")
+__all__ = "initdb", "stow"
DB = None
SCHEMA = """create table if not exists events (
- timestamp real not null,
+ tstamp real not null,
imei text,
- clntaddr text not null,
+ peeraddr text not null,
proto int not null,
- payload blob
+ packet blob
)"""
DB.execute(SCHEMA)
-def stow(clntaddr, timestamp, imei, proto, payload):
+def stow(**kwargs):
assert DB is not None
- parms = dict(
- zip(
- ("clntaddr", "timestamp", "imei", "proto", "payload"),
- (str(clntaddr), timestamp, imei, proto, payload),
+ parms = {
+ k: kwargs[k] if k in kwargs else v
+ for k, v in (
+ ("peeraddr", None),
+ ("when", 0.0),
+ ("imei", None),
+ ("proto", -1),
+ ("packet", b""),
)
- )
- log.debug("inserting %s", parms)
+ }
+ assert len(kwargs) <= len(parms)
DB.execute(
"""insert or ignore into events
- (timestamp, imei, clntaddr, proto, payload)
- values (:timestamp, :imei, :clntaddr, :proto, :payload)""",
+ (tstamp, imei, peeraddr, proto, packet)
+ values
+ (:when, :imei, :peeraddr, :proto, :packet)
+ """,
parms,
)
DB.commit()