""" sqlite event store """
-from sqlite3 import connect
+from sqlite3 import connect, OperationalError
__all__ = "fetch", "initdb", "stow"
tstamp real not null,
imei text,
peeraddr text not null,
+ is_incoming int not null default TRUE,
proto int not null,
packet blob
)"""
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):
parms = {
k: kwargs[k] if k in kwargs else v
for k, v in (
+ ("is_incoming", True),
("peeraddr", None),
("when", 0.0),
("imei", None),
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,
)