import tiny_sqlite import std / [options, times] import dbUtils const migrations = [ """ CREATE TABLE schema_version ( version INTEGER NOT NULL ); CREATE TABLE url ( id INTEGER PRIMARY KEY, token TEXT NOT NULL UNIQUE, title TEXT NOT NULL, url TEXT, created DATE, expires DATE ); CREATE UNIQUE INDEX idx_url_token ON url(token); """ ] const latestVersion = migrations.len proc Migrate*(db: DbConn): bool {.raises: [].} = var currentVersion: int try: currentVersion = db.value("SELECT version FROM schema_version;").get().fromDbValue(int) except SqliteError: discard if currentVersion != latestVersion: try: db.exec("BEGIN") for v in currentVersion..