Exemplo n.º 1
0
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 = ?);");
}
Exemplo n.º 2
0
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 = ?);");
}