Don't keep QSqlDatabase instance
This commit is contained in:
+12
-10
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user