#include "database.h" #include #include #include #include Database::Database(QObject *parent) : QObject(parent) { } bool Database::init() { QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); QDir dir(path); m_database = QSqlDatabase::addDatabase("QSQLITE"); if(!dir.mkpath(".")) return false; if(m_database.isValid()) { m_database.setDatabaseName(dir.absoluteFilePath("database.db")); if(m_database.open()) { m_database.exec("CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY AUTOINCREMENT, file VARCHAR(255) UNIQUE);"); QSqlError error = m_database.lastError(); if(error.type() == QSqlError::NoError) { m_markQuery = QSqlQuery(m_database); m_markQuery.prepare("INSERT INTO files (file) VALUES (?)"); m_unmarkQuery = QSqlQuery(m_database); m_unmarkQuery.prepare("DELETE FROM files WHERE file = (?)"); m_isMarkedQuery = QSqlQuery(m_database); m_isMarkedQuery.prepare("SELECT * FROM files WHERE file = (:name)"); return true; } qDebug() << error.text(); } } return false; } bool Database::mark(const QString &filename) { m_markQuery.bindValue(0, filename); m_markQuery.exec(); return checkError(); } bool Database::unmark(const QString &filename) { m_unmarkQuery.bindValue(0, filename); m_unmarkQuery.exec(); return checkError(); } bool Database::isMarked(const QString &filename) { m_isMarkedQuery.bindValue(":name", filename); m_isMarkedQuery.exec(); checkError(); return m_isMarkedQuery.next(); } bool Database::checkError() { QSqlError error = m_database.lastError(); if(error.type() == QSqlError::NoError) return true; else { qDebug() << error.text(); return false; } }