33 lines
915 B
Nim
33 lines
915 B
Nim
import tiny_sqlite
|
|
import options
|
|
import times
|
|
|
|
let migrations: seq[string] = @[
|
|
"""
|
|
CREATE TABLE sites (
|
|
sid INTEGER PRIMARY KEY,
|
|
url TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE reqs (
|
|
rid INTEGER PRIMARY KEY,
|
|
site INTEGER NOT NULL REFERENCES sites(sid),
|
|
timestamp INTEGER NOT NULL,
|
|
status INTEGER NOT NULL,
|
|
latency INTEGER NOT NULL
|
|
);
|
|
""",
|
|
"""
|
|
CREATE INDEX req_ts_idx ON reqs (timestamp);
|
|
"""
|
|
]
|
|
|
|
proc migrate*(db: DbConn) =
|
|
let currentVersion = fromDbValue(get db.value("PRAGMA user_version"), int)
|
|
for mid in (currentVersion + 1) .. migrations.len:
|
|
db.transaction:
|
|
echo "Migrating to schema " & $mid
|
|
db.execScript migrations[mid - 1]
|
|
# for some reason this pragma does not work using normal parameter binding
|
|
db.exec("PRAGMA user_version = " & $mid)
|
|
echo "DB ready" |