| 83 | } |
| 84 | |
| 85 | bool DatabaseControlMessage::resetQueueStatus(InternalDatabaseInterface* database, int maxAgeInSeconds) { |
| 86 | QSqlQuery query(database->getQueryObject()); |
| 87 | |
| 88 | openmittsu::protocol::MessageTime const limit(QDateTime::currentDateTime().addSecs(-maxAgeInSeconds)); |
| 89 | query.prepare(QStringLiteral("SELECT `identity`, `apiid`, `related_message_apiid`, `uid`, `control_message_type` FROM `control_messages` WHERE `is_outbox` = 1 AND `is_queued` = 1 AND `is_sent` = 0 AND ((`modified_at` <= %1) OR (`modified_at` IS NULL));").arg(limit.getMessageTimeMSecs())); |
| 90 | if (!query.exec() || !query.isSelect()) { |
| 91 | throw openmittsu::exceptions::InternalErrorException() << "Could not execute control message queue reset query for table control_messages. Query error: " << query.lastError().text().toStdString(); |
| 92 | } |
| 93 | |
| 94 | bool hasAtLeastOneEntry = false; |
| 95 | while (query.next()) { |
| 96 | hasAtLeastOneEntry = true; |
| 97 | ControlMessageType const messageType = ControlMessageTypeHelper::fromString(query.value(QStringLiteral("control_message_type")).toString()); |
| 98 | openmittsu::protocol::ContactId const receiver(query.value(QStringLiteral("identity")).toString()); |
| 99 | openmittsu::protocol::MessageId const messageId(query.value(QStringLiteral("apiid")).toString()); |
| 100 | openmittsu::protocol::MessageId const relatedMessageId(query.value(QStringLiteral("related_message_apiid")).toString()); |
| 101 | DatabaseControlMessage message(database, receiver, messageId, relatedMessageId, messageType); |
| 102 | message.setIsQueued(false); |
| 103 | } |
| 104 | |
| 105 | return hasAtLeastOneEntry; |
| 106 | } |
| 107 | |
| 108 | QString DatabaseControlMessage::getWhereString() const { |
| 109 | return QStringLiteral("`identity` = :identity"); |
nothing calls this directly
no test coverage detected