void DBWorker::init() { QString databaseDir = BrowserPaths::dataLocation(); if (databaseDir.isNull()) { return; } QDir dir(databaseDir); const QString dbFileName(QLatin1String(DB_NAME)); m_database = QSqlDatabase::addDatabase("QSQLITE"); m_database.setDatabaseName(dir.absoluteFilePath(dbFileName)); bool dbCreated = dir.exists(dbFileName); bool ok = m_database.open(); if (!ok) qWarning() << "Failed to open database " << m_database.databaseName(); if (!dbCreated) { //TODO check transaction & rollback/commit for (int i = 0; i < db_schema_count; ++i) { QSqlQuery query = prepare(db_schema[i]); execute(query); } } else { // Limit history size to 2000 entries QSqlQuery cleanupHistory = prepare("DELETE FROM browser_history WHERE id NOT IN (SELECT id from browser_history"\ " ORDER BY date DESC LIMIT " STR(MAX_BROWSER_HISTORY_SIZE) ");"); if (!execute(cleanupHistory)) { qWarning() << "Failed to clear older history items"; } } // check current schema version and migrate if needed QSqlQuery schemaQuery = prepare("PRAGMA user_version;"); if (execute(schemaQuery) && schemaQuery.next()) { int userVersion = schemaQuery.value(0).toInt(); if (userVersion == 0) { migrateTo_1(); } } else { qWarning() << "Failed to check schema version"; } m_updateThumbPathQuery = prepare("UPDATE link SET thumb_path = ? " "WHERE link_id IN (SELECT link.link_id " "FROM tab_history INNER JOIN link ON tab_history.link_id=link.link_id WHERE tab_history.tab_id = ?);"); }
void DBWorker::init() { QString databaseDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation); const QString dbFileName = QLatin1String(DB_NAME); QDir dir(databaseDir); if(!dir.mkpath(databaseDir)) { qWarning() << "Can't create directory "+ databaseDir; return; } m_database = QSqlDatabase::addDatabase("QSQLITE"); m_database.setDatabaseName(dir.absoluteFilePath(dbFileName)); bool dbCreated = dir.exists(dbFileName); bool ok = m_database.open(); if (!ok) qWarning() << "Failed to open database " << m_database.databaseName(); if (!dbCreated) { //TODO check transaction & rollback/commit for (int i = 0; i < db_schema_count; ++i) { QSqlQuery query = prepare(db_schema[i]); execute(query); } } // check current schema version and migrate if needed QSqlQuery schemaQuery = prepare("PRAGMA user_version;"); if (execute(schemaQuery) && schemaQuery.next()) { int userVersion = schemaQuery.value(0).toInt(); if (userVersion == 0) { migrateTo_1(); } } else { qWarning() << "Failed to check schema version"; } m_updateThumbPathQuery = prepare("UPDATE link SET thumb_path = ? " "WHERE link_id IN (SELECT link.link_id " "FROM tab_history INNER JOIN link ON tab_history.link_id=link.link_id WHERE tab_history.tab_id = ?);"); }