From 0c31bdc152495c02ec53ef1e409da04f599eb738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20F=C3=B6rtsch?= Date: Sun, 15 Mar 2026 12:24:32 +0100 Subject: [PATCH] fix insertMessages: use COUNT(*) instead of MessageRecord.fetchOne for existence check MessageRecord.fetchOne decodes all columns but the query only selects id, causing "column not found: accountId". Use COUNT(*) which returns a plain Int. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../MagnumOpusCore/Sources/MailStore/MailStore.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Packages/MagnumOpusCore/Sources/MailStore/MailStore.swift b/Packages/MagnumOpusCore/Sources/MailStore/MailStore.swift index a4e7aad..971af6c 100644 --- a/Packages/MagnumOpusCore/Sources/MailStore/MailStore.swift +++ b/Packages/MagnumOpusCore/Sources/MailStore/MailStore.swift @@ -61,12 +61,11 @@ public final class MailStore: Sendable { try dbWriter.write { db in var inserted: [MessageRecord] = [] for message in messages { - // Check if a message with this (mailboxId, uid) already exists - let exists = try MessageRecord.fetchOne(db, sql: - "SELECT id FROM message WHERE mailboxId = ? AND uid = ?", + let count = try Int.fetchOne(db, sql: + "SELECT COUNT(*) FROM message WHERE mailboxId = ? AND uid = ?", arguments: [message.mailboxId, message.uid] - ) - if exists == nil { + ) ?? 0 + if count == 0 { try message.insert(db) inserted.append(message) }