From ad9b9c0f7bd4d95ddc54462970d33d92bab9392c Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Fri, 22 Oct 2021 17:59:44 +0200 Subject: Added a functionning url shortening service --- src/database.nim | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/database.nim (limited to 'src/database.nim') diff --git a/src/database.nim b/src/database.nim new file mode 100644 index 0000000..8094f31 --- /dev/null +++ b/src/database.nim @@ -0,0 +1,79 @@ +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..