diff options
Diffstat (limited to 'Database/initdatabase.cpp')
| -rw-r--r-- | Database/initdatabase.cpp | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/Database/initdatabase.cpp b/Database/initdatabase.cpp deleted file mode 100644 index 06cd37c..0000000 --- a/Database/initdatabase.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "databaseinterface.h" - -bool initDatabase(const QString applicationPath) -{ - // open SQLite database - QSqlDatabase dbi = QSqlDatabase::addDatabase( "QSQLITE" ); - dbi.setDatabaseName(applicationPath + "/" + _sqlitePath); - - // open database - if ( ! dbi.open() ) - { - QSqlError sqlError = dbi.lastError(); - logPrimitive() << "Error opening database: " << sqlError.text() << endl; - return false; - } - - // speed up SQLite with keeping journals in memory and asynchronous writing - dbi.exec("PRAGMA synchronous = OFF"); - dbi.exec("PRAGMA journal_mode = MEMORY"); - - { // check if the database was generated with this version of the software - - // serverlist exists (and thus the other tables exist) but not version - if ( dbi.tables().contains("serverlist") and ! dbi.tables().contains("versioninfo")) - { - // outdated because the "version" table does not even exist yet (pre-0.14) - logPrimitive() << "The database tables are outdated (pre-0.14). Please remove the current database." << endl; - return false; - } - - // does the version table exist, and does it contain the correct version? - if ( dbi.tables().contains("versioninfo") ) - { - float dbVersion = 0.0; - QSqlQuery versionQuery; - versionQuery.prepare("SELECT version FROM versioninfo WHERE type = \"database\""); - - // failed query? (unlikely) - if ( ! versionQuery.exec() ) - return reportQuery(versionQuery); - - if (versionQuery.next()) - dbVersion = versionQuery.value("version").toFloat(); - - // version check is intentionally hardcoded since the last change in database structure (currently v0.15) - if ( dbVersion < DATABASE_VERSION ) - { - logPrimitive() << "The database tables are outdated (" << QString::number(dbVersion) << "). Please remove the current database." << endl; - return false; - } - - // tables up to date - return true; - } - } - - // specifying AUTO_CREATE_DB=y in the environment allows bypassing of the interactive prompt for non-interactive environments - if (qgetenv("AUTO_CREATE_DB") != "y") - { - // relevant tables do not exist. ask to generate. - logPrimitive() << "The database tables do not exist. Do you want to generate these? [y/N]" << endl; - - // if no, do not proceed. - if ( ! QTextStream(stdin).readLine().startsWith("y") ) - { - // do not generate. failed to load database. - return false; - } - } - else - { - logPrimitive() << "The database tables do not exist and will now be created." << endl; - } - - // create tables and proceed - return createTables(); -} |
