feat(db): reviewed_real column on events (+ auto-migrate)
This commit is contained in:
@@ -81,6 +81,7 @@ CREATE TABLE IF NOT EXISTS events (
|
|||||||
sample_rate INTEGER,
|
sample_rate INTEGER,
|
||||||
record_type TEXT, -- "single_shot" | "continuous"
|
record_type TEXT, -- "single_shot" | "continuous"
|
||||||
false_trigger INTEGER NOT NULL DEFAULT 0, -- 0=no, 1=yes (manual flag)
|
false_trigger INTEGER NOT NULL DEFAULT 0, -- 0=no, 1=yes (manual flag)
|
||||||
|
reviewed_real INTEGER NOT NULL DEFAULT 0, -- 0=no, 1=operator-confirmed real (mutually exclusive with false_trigger)
|
||||||
blastware_filename TEXT, -- event file within waveform store; extension is per-event (AB0T encodes timestamp)
|
blastware_filename TEXT, -- event file within waveform store; extension is per-event (AB0T encodes timestamp)
|
||||||
blastware_filesize INTEGER, -- bytes; NULL if no event file saved
|
blastware_filesize INTEGER, -- bytes; NULL if no event file saved
|
||||||
a5_pickle_filename TEXT, -- "<filename>.a5.pkl" sidecar
|
a5_pickle_filename TEXT, -- "<filename>.a5.pkl" sidecar
|
||||||
@@ -188,6 +189,7 @@ class SeismoDb:
|
|||||||
sample_rate INTEGER,
|
sample_rate INTEGER,
|
||||||
record_type TEXT,
|
record_type TEXT,
|
||||||
false_trigger INTEGER NOT NULL DEFAULT 0,
|
false_trigger INTEGER NOT NULL DEFAULT 0,
|
||||||
|
reviewed_real INTEGER NOT NULL DEFAULT 0,
|
||||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||||
UNIQUE(serial, timestamp)
|
UNIQUE(serial, timestamp)
|
||||||
);
|
);
|
||||||
@@ -224,6 +226,7 @@ class SeismoDb:
|
|||||||
("shape_near_peak_count", "INTEGER"),
|
("shape_near_peak_count", "INTEGER"),
|
||||||
("shape_sample_count", "INTEGER"),
|
("shape_sample_count", "INTEGER"),
|
||||||
("shape_axis", "TEXT"),
|
("shape_axis", "TEXT"),
|
||||||
|
("reviewed_real", "INTEGER NOT NULL DEFAULT 0"),
|
||||||
):
|
):
|
||||||
if col not in existing_cols:
|
if col not in existing_cols:
|
||||||
log.info("_migrate: events ADD COLUMN %s %s", col, ddl)
|
log.info("_migrate: events ADD COLUMN %s %s", col, ddl)
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
import sqlite3
|
||||||
|
from sfm.database import SeismoDb
|
||||||
|
def _cols(db):
|
||||||
|
with sqlite3.connect(db.db_path) as c:
|
||||||
|
return {r[1] for r in c.execute("PRAGMA table_info(events)")}
|
||||||
|
def test_fresh_db_has_reviewed_real(tmp_path):
|
||||||
|
assert "reviewed_real" in _cols(SeismoDb(tmp_path/"s.db"))
|
||||||
|
def test_existing_db_migrates_reviewed_real(tmp_path):
|
||||||
|
p = tmp_path/"s.db"; db = SeismoDb(p)
|
||||||
|
with sqlite3.connect(p) as c:
|
||||||
|
c.execute("ALTER TABLE events DROP COLUMN reviewed_real")
|
||||||
|
assert "reviewed_real" not in _cols(db) # dropped (read via existing handle/connection)
|
||||||
|
SeismoDb(p) # re-open migrates
|
||||||
|
assert "reviewed_real" in _cols(SeismoDb(p))
|
||||||
Reference in New Issue
Block a user