Don't keep QSqlDatabase instance

This commit is contained in:
2022-04-11 10:33:28 +02:00
parent 84a71896f8
commit 61a618b2fd
2 changed files with 13 additions and 12 deletions
+12 -10
View File
@@ -15,7 +15,7 @@ bool Database::init()
QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
QDir dir(path); QDir dir(path);
m_database = QSqlDatabase::addDatabase("QSQLITE"); QSqlDatabase m_database = QSqlDatabase::addDatabase("QSQLITE");
if(!dir.mkpath(".")) if(!dir.mkpath("."))
return false; return false;
@@ -30,6 +30,7 @@ bool Database::init()
m_database.exec("CREATE TABLE IF NOT EXISTS fits_files (id INTEGER PRIMARY KEY AUTOINCREMENT, file VARCHAR(255) UNIQUE, mtime DATETIME)"); m_database.exec("CREATE TABLE IF NOT EXISTS fits_files (id INTEGER PRIMARY KEY AUTOINCREMENT, file VARCHAR(255) UNIQUE, mtime DATETIME)");
m_database.exec("CREATE TABLE IF NOT EXISTS fits_headers (id INTEGER PRIMARY KEY AUTOINCREMENT, id_file INTEGER," m_database.exec("CREATE TABLE IF NOT EXISTS fits_headers (id INTEGER PRIMARY KEY AUTOINCREMENT, id_file INTEGER,"
"key VARCHAR(81), value VARCHAR(81), comment VARCHAR(81), FOREIGN KEY(id_file) REFERENCES fits_files(id) ON DELETE CASCADE)"); "key VARCHAR(81), value VARCHAR(81), comment VARCHAR(81), FOREIGN KEY(id_file) REFERENCES fits_files(id) ON DELETE CASCADE)");
m_database.exec("CREATE INDEX IF NOT EXISTS key_value ON fits_headers(key, value)");
QSqlError error = m_database.lastError(); QSqlError error = m_database.lastError();
if(error.type() == QSqlError::NoError) if(error.type() == QSqlError::NoError)
@@ -64,27 +65,27 @@ bool Database::mark(const QString &filename)
{ {
m_markQuery.bindValue(0, filename); m_markQuery.bindValue(0, filename);
m_markQuery.exec(); m_markQuery.exec();
return checkError(); return checkError(m_markQuery);
} }
bool Database::unmark(const QString &filename) bool Database::unmark(const QString &filename)
{ {
m_unmarkQuery.bindValue(0, filename); m_unmarkQuery.bindValue(0, filename);
m_unmarkQuery.exec(); m_unmarkQuery.exec();
return checkError(); return checkError(m_unmarkQuery);
} }
bool Database::isMarked(const QString &filename) bool Database::isMarked(const QString &filename)
{ {
m_isMarkedQuery.bindValue(":name", filename); m_isMarkedQuery.bindValue(":name", filename);
m_isMarkedQuery.exec(); m_isMarkedQuery.exec();
checkError(); checkError(m_isMarkedQuery);
return m_isMarkedQuery.next(); return m_isMarkedQuery.next();
} }
QStringList Database::getMarkedFiles() QStringList Database::getMarkedFiles()
{ {
QSqlQuery markedFiles("SELECT * from files", m_database); QSqlQuery markedFiles("SELECT * from files");
QStringList files; QStringList files;
while(markedFiles.next()) while(markedFiles.next())
@@ -96,9 +97,9 @@ QStringList Database::getMarkedFiles()
return files; return files;
} }
bool Database::checkError() bool Database::checkError(QSqlQuery &query)
{ {
QSqlError error = m_database.lastError(); QSqlError error = query.lastError();
if(error.type() == QSqlError::NoError) if(error.type() == QSqlError::NoError)
return true; return true;
else else
@@ -124,11 +125,12 @@ void Database::indexDir(const QDir &dir, QProgressDialog *progress)
m_progress = 0; m_progress = 0;
int count = countFiles(dir); int count = countFiles(dir);
progress->setMaximum(count); progress->setMaximum(count);
m_database.transaction(); QSqlDatabase database = QSqlDatabase::database();
database.transaction();
if(indexDir2(dir, progress)) if(indexDir2(dir, progress))
m_database.commit(); database.commit();
else else
m_database.rollback(); database.rollback();
} }
QStringList Database::getFitsKeywords() QStringList Database::getFitsKeywords()
+1 -2
View File
@@ -10,7 +10,6 @@
class Database : public QObject class Database : public QObject
{ {
Q_OBJECT Q_OBJECT
QSqlDatabase m_database;
QSqlQuery m_markQuery; QSqlQuery m_markQuery;
QSqlQuery m_unmarkQuery; QSqlQuery m_unmarkQuery;
QSqlQuery m_isMarkedQuery; QSqlQuery m_isMarkedQuery;
@@ -34,7 +33,7 @@ public:
QStringList getFitsKeywords(); QStringList getFitsKeywords();
protected: protected:
bool indexDir2(const QDir &dir, QProgressDialog *progress); bool indexDir2(const QDir &dir, QProgressDialog *progress);
bool checkError(); bool checkError(QSqlQuery &query);
}; };
#endif // DATABASE_H #endif // DATABASE_H