From 82b2b63c759f8c38c9fca747525d5fc99f406c68 Mon Sep 17 00:00:00 2001 From: skilion Date: Sun, 25 Dec 2016 00:15:33 +0100 Subject: [PATCH] added functions to get and set the db version --- src/sqlite.d | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/sqlite.d b/src/sqlite.d index 7df5c82d..e42b7dcd 100644 --- a/src/sqlite.d +++ b/src/sqlite.d @@ -64,6 +64,27 @@ struct Database } } + int getVersion() + { + int userVersion; + extern (C) int callback(void* user_version, int count, char** column_text, char** column_name) { + import std.c.stdlib: atoi; + *(cast(int*) user_version) = atoi(*column_text); + return 0; + } + int rc = sqlite3_exec(pDb, "PRAGMA user_version", &callback, &userVersion, null); + if (rc != SQLITE_OK) { + throw new SqliteException(ifromStringz(sqlite3_errmsg(pDb))); + } + return userVersion; + } + + void setVersion(int userVersion) + { + import std.conv: to; + exec("PRAGMA user_version=" ~ to!string(userVersion)); + } + Statement prepare(const(char)[] zSql) { Statement s; @@ -170,6 +191,10 @@ unittest value TEXT )"); + assert(db.getVersion() == 0); + db.setVersion(1); + assert(db.getVersion() == 1); + auto s = db.prepare("INSERT INTO test VALUES (?, ?)"); s.bind(1, "key1"); s.bind(2, "value1");