fix: Parameter count mismatch in findByFolderIdPaginated and countByFolderId
- Move query.bindValue() calls AFTER query.prepare() in both methods
- Remove duplicate bindValue(':search') in findByFolderIdPaginated
- This fixes 'Parameter count mismatch' error when fetching paginated emails
This commit is contained in:
@@ -476,12 +476,9 @@ int MailItemDao::countByFolderId(int folderId, const QString& searchFilter, bool
|
||||
{
|
||||
QSqlDatabase db = DatabaseManager::instance().database();
|
||||
QString sql = "SELECT COUNT(*) FROM MailCopy WHERE folderId = :folderId";
|
||||
QSqlQuery query(db);
|
||||
query.bindValue(":folderId", folderId);
|
||||
|
||||
if (!searchFilter.isEmpty()) {
|
||||
sql += " AND (subject LIKE :search OR sender LIKE :search OR recipient LIKE :search OR bodyHtml LIKE :search)";
|
||||
query.bindValue(":search", "%" + searchFilter + "%");
|
||||
}
|
||||
if (unreadOnly) {
|
||||
sql += " AND read = 0";
|
||||
@@ -496,7 +493,13 @@ int MailItemDao::countByFolderId(int folderId, const QString& searchFilter, bool
|
||||
sql += " AND isPinned = 1";
|
||||
}
|
||||
|
||||
QSqlQuery query(db);
|
||||
query.prepare(sql);
|
||||
query.bindValue(":folderId", folderId);
|
||||
|
||||
if (!searchFilter.isEmpty()) {
|
||||
query.bindValue(":search", "%" + searchFilter + "%");
|
||||
}
|
||||
if (!query.exec()) {
|
||||
qWarning() << "Failed to count mails by folder:" << query.lastError().text();
|
||||
return 0;
|
||||
@@ -582,11 +585,8 @@ QVector<MailItem> MailItemDao::findByFolderIdPaginated(int folderId, int offset,
|
||||
QSqlDatabase db = DatabaseManager::instance().database();
|
||||
QString sql = "SELECT id, folderId, messageId, subject, sender, recipient, date, read, flagged, hasAttachment, size, fileId, uid, bodyHtml, toAddr, ccAddr, bccAddr, threadId, inReplyTo, \"references\", isPinned FROM MailCopy WHERE folderId = :folderId";
|
||||
|
||||
QSqlQuery query(db);
|
||||
|
||||
if (!searchFilter.isEmpty()) {
|
||||
sql += " AND (subject LIKE :search OR sender LIKE :search OR recipient LIKE :search OR bodyHtml LIKE :search)";
|
||||
query.bindValue(":search", "%" + searchFilter + "%");
|
||||
}
|
||||
if (unreadOnly) {
|
||||
sql += " AND read = 0";
|
||||
@@ -603,6 +603,7 @@ QVector<MailItem> MailItemDao::findByFolderIdPaginated(int folderId, int offset,
|
||||
|
||||
sql += " ORDER BY date DESC LIMIT :limit OFFSET :offset";
|
||||
|
||||
QSqlQuery query(db);
|
||||
query.prepare(sql);
|
||||
query.bindValue(":folderId", folderId);
|
||||
query.bindValue(":limit", limit);
|
||||
|
||||
Reference in New Issue
Block a user