#include <QtCore/QDir>
#include <QtCore/QDebug>
+#include <QtCore/QVariant>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include "db.h"
{
const QString SQL_DRIVER = "QSQLITE";
const QString SQL_DATABASE = ".jenirok.db";
+ const int DB_VERSION = 2;
}
bool DB::initialized_ = false;
if(ret && !initialized_)
{
- QSqlQuery query("SELECT value FROM settings WHERE name = 'initialized'");
+ QSqlQuery query("SELECT value FROM settings WHERE name = 'db_version'");
- if(!query.next())
+ if(query.next())
{
- ret = createTables();
+ int currentVersion = query.value(0).toString().toInt();
+
+ if(currentVersion < DB_VERSION)
+ {
+ ret = createTables(true);
+ }
+ }
+ else
+ {
+ ret = createTables(false);
}
}
return db_;
}
-bool DB::createTables()
+bool DB::createTables(bool update)
{
QSqlQuery query;
bool ret = true;
- ret = ret && query.exec("CREATE TABLE cache (id INTEGER PRIMARY KEY, number VARCHAR(32) NOT NULL UNIQUE, name VARCHAR(255) NOT NULL, street VARCHAR(255) NOT NULL, city VARCHAR(255) NOT NULL)");
- ret = ret && query.exec("CREATE TABLE settings (name VARCHAR(255) NOT NULL PRIMARY KEY, value VARCHAR(255) NOT NULL)");
- ret = ret && query.exec("INSERT INTO settings(name, value) VALUES('initialized', '1')");
+ ret = ret && query.exec("CREATE TABLE IF NOT EXISTS cache (id INTEGER PRIMARY KEY, number VARCHAR(32) NOT NULL UNIQUE, name VARCHAR(255) NOT NULL, street VARCHAR(255) NOT NULL, city VARCHAR(255) NOT NULL)");
+ ret = ret && query.exec("CREATE TABLE IF NOT EXISTS settings (name VARCHAR(255) NOT NULL PRIMARY KEY, value VARCHAR(255) NOT NULL)");
+ ret = ret && query.exec("CREATE TABLE IF NOT EXISTS log (id INTEGER PRIMARY KEY, number VARCHAR(32) NOT NULL, name VARCHAR(255), street VARCHAR(255), city VARCHAR(255), country VARCHAR(255), time INTEGER NOT NULL, missed INTEGER NOT NULL)");
+
+ if(update)
+ {
+ ret = ret && query.exec("UPDATE settings SET value = '" + QString::number(DB_VERSION) + "' WHERE name = 'db_version'");
+ }
+ else
+ {
+ ret = ret && query.exec("INSERT INTO settings(name, value) VALUES('db_version', '" + QString::number(DB_VERSION) + "')");
+ }
return ret;
}