@@ -27,7 +27,7 @@ ADriverSqlite::ADriverSqlite(const QString &connInfo)
2727 QMutexLocker _ (&m_worker.m_promisesMutex );
2828 while (!m_worker.m_promisesReady .isEmpty ()) {
2929 QueryPromise promise = m_worker.m_promisesReady .dequeue ();
30- if (!promise.checkReceiver || !promise.receiver . isNull ()) {
30+ if (!promise.receiver . has_value () || !promise.receiver -> isNull ()) {
3131 if (promise.cb ) {
3232 AResult result{promise.result };
3333 promise.cb (result);
@@ -82,19 +82,21 @@ void ADriverSqlite::open(const std::shared_ptr<ADriver> &driver,
8282 selfDriver = driver;
8383
8484 OpenPromise promise{
85- .cb = cb,
86- .receiver = receiver,
87- .checkReceiver = static_cast <bool >(receiver),
85+ .cb = cb,
8886 };
8987
88+ if (receiver) {
89+ promise.receiver = receiver;
90+ }
91+
9092 connect (&m_worker, &ASqliteThread::openned, this , [this , promise](bool isOpen, QString error) {
9193 if (isOpen) {
9294 setState (ADatabase::State::Connected, {});
9395 } else {
9496 setState (ADatabase::State::Disconnected, error);
9597 }
9698
97- if (!promise.checkReceiver || !promise.receiver . isNull ()) {
99+ if (!promise.receiver . has_value () || !promise.receiver -> isNull ()) {
98100 if (promise.cb ) {
99101 promise.cb (isOpen, error);
100102 }
@@ -124,7 +126,8 @@ bool ADriverSqlite::isOpen() const
124126void ADriverSqlite::setState (ADatabase::State state, const QString &status)
125127{
126128 m_state = state;
127- if (m_stateChangedCb && (!m_stateChangedReceiverSet || !m_stateChangedReceiver.isNull ())) {
129+ if (m_stateChangedCb &&
130+ (!m_stateChangedReceiver.has_value () || !m_stateChangedReceiver->isNull ())) {
128131 m_stateChangedCb (state, status);
129132 }
130133}
@@ -137,9 +140,10 @@ ADatabase::State ADriverSqlite::state() const
137140void ADriverSqlite::onStateChanged (QObject *receiver,
138141 std::function<void (ADatabase::State, const QString &)> cb)
139142{
140- m_stateChangedCb = cb;
141- m_stateChangedReceiver = receiver;
142- m_stateChangedReceiverSet = receiver;
143+ m_stateChangedCb = cb;
144+ if (receiver) {
145+ m_stateChangedReceiver = receiver;
146+ }
143147}
144148
145149void ADriverSqlite::begin (const std::shared_ptr<ADriver> &db, QObject *receiver, AResultFn cb)
@@ -166,11 +170,12 @@ void ADriverSqlite::exec(const std::shared_ptr<ADriver> &db,
166170 selfDriver = db;
167171
168172 QueryPromise data{
169- .cb = cb,
170- .result = std::make_shared<AResultSqlite>(),
171- .receiver = receiver,
172- .checkReceiver = static_cast <bool >(receiver),
173+ .cb = cb,
174+ .result = std::make_shared<AResultSqlite>(),
173175 };
176+ if (receiver) {
177+ data.receiver = receiver;
178+ }
174179 data.result ->m_query .setRawData (query.data (), query.size ());
175180
176181#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
@@ -191,11 +196,12 @@ void ADriverSqlite::exec(const std::shared_ptr<ADriver> &db,
191196 selfDriver = db;
192197
193198 QueryPromise data{
194- .cb = cb,
195- .result = std::make_shared<AResultSqlite>(),
196- .receiver = receiver,
197- .checkReceiver = static_cast <bool >(receiver),
199+ .cb = cb,
200+ .result = std::make_shared<AResultSqlite>(),
198201 };
202+ if (receiver) {
203+ data.receiver = receiver;
204+ }
199205 data.result ->m_query = query.toUtf8 ();
200206
201207#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
@@ -217,11 +223,12 @@ void ADriverSqlite::exec(const std::shared_ptr<ADriver> &db,
217223 selfDriver = db;
218224
219225 QueryPromise data{
220- .cb = cb,
221- .result = std::make_shared<AResultSqlite>(),
222- .receiver = receiver,
223- .checkReceiver = static_cast <bool >(receiver),
226+ .cb = cb,
227+ .result = std::make_shared<AResultSqlite>(),
224228 };
229+ if (receiver) {
230+ data.receiver = receiver;
231+ }
225232 data.result ->m_query .setRawData (query.data (), query.size ());
226233 data.result ->m_queryArgs = params;
227234
@@ -244,11 +251,12 @@ void ADriverSqlite::exec(const std::shared_ptr<ADriver> &db,
244251 selfDriver = db;
245252
246253 QueryPromise data{
247- .cb = cb,
248- .result = std::make_shared<AResultSqlite>(),
249- .receiver = receiver,
250- .checkReceiver = static_cast <bool >(receiver),
254+ .cb = cb,
255+ .result = std::make_shared<AResultSqlite>(),
251256 };
257+ if (receiver) {
258+ data.receiver = receiver;
259+ }
252260 data.result ->m_query = query.toUtf8 ();
253261 data.result ->m_queryArgs = params;
254262
@@ -274,9 +282,10 @@ void ADriverSqlite::exec(const std::shared_ptr<ADriver> &db,
274282 .preparedQuery = query,
275283 .cb = cb,
276284 .result = std::make_shared<AResultSqlite>(),
277- .receiver = receiver,
278- .checkReceiver = static_cast <bool >(receiver),
279285 };
286+ if (receiver) {
287+ data.receiver = receiver;
288+ }
280289 data.result ->m_query = query.query ();
281290 data.result ->m_queryArgs = params;
282291
0 commit comments