#include <QSqlDriver>
#include <QVariant>
#include <QThread>
+#include <algorithm>
+
#include <QDebug>
namespace LocalMyList {
{
Q_ASSERT_X(d->thread == QThread::currentThread(), "threads", "DB used from different thread");
- if (!d->db.isOpen())
+ if (!isConnected())
{
- disconnect();
- if (!connect())
- return false;
+ auto keyIt = std::find_if(d->preparedQueries.constBegin(), d->preparedQueries.constEnd(),
+ [&](const QSqlQuery &a) { return &a == &query;});
- return retryExec(query, true);
+ Q_ASSERT(keyIt != d->preparedQueries.constEnd());
+
+ auto key = keyIt.key();
+ auto values = query.boundValues();
+
+ query = prepare(key);
+
+ for(auto it = values.constBegin(); it != values.constEnd(); ++it)
+ query.bindValue(it.key(), it.value());
+
+ return retryExec(query, false);
}
if (!query.exec())
{
Q_ASSERT_X(d->thread == QThread::currentThread(), "threads", "DB used from different thread");
- if (!d->db.isOpen())
+ if (!isConnected())
{
disconnect();
if (!connect())