diff --git a/bin/insert_event.py b/bin/insert_event.py new file mode 100755 index 0000000..6a243c4 --- /dev/null +++ b/bin/insert_event.py @@ -0,0 +1,48 @@ +#!/usr/bin/python3 + +from datetime import datetime +from datastore import Datastore + +def detect_schema (conn): + with conn.cursor() as cursor: + qry = "SELECT meta->>'_schema' AS schema, tstamp, age(current_timestamp, tstamp) age FROM real_time_inputs WHERE meta ? '_schema' AND age(current_timestamp, tstamp) < '02:00:00' ORDER BY tstamp DESC LIMIT 1" + cursor.execute(qry) + res = cursor.fetchone() + if res and len(res): + return res[0] + return None + +if __name__ == '__main__': + import argparse + + ap = argparse.ArgumentParser() + ap.add_argument("-s", "--schema", required=False, default=None, help="survey where to insert the event") + ap.add_argument("-t", "--tstamp", required=False, default=None, help="event timestamp") + ap.add_argument("-l", "--label", required=False, default=None, action="append", help="event label") + ap.add_argument('remarks', type=str, nargs="+", help="event message") + args = vars(ap.parse_args()) + + + db = Datastore() + db.connect() + + if args["schema"]: + schema = args["schema"] + else: + schema = detect_schema(db.conn) + + if args["tstamp"]: + tstamp = args["tstamp"] + else: + tstamp = datetime.utcnow().isoformat() + + message = " ".join(args["remarks"]) + + print("new event:", schema, tstamp, message) + + if schema and tstamp and message: + db.set_survey(schema) + with db.conn.cursor() as cursor: + qry = "INSERT INTO events_timed (tstamp, remarks) VALUES (%s, %s);" + cursor.execute(qry, (tstamp, message)) + db.maybe_commit()