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) <noreply@anthropic.com>
This commit is contained in:
@@ -61,12 +61,11 @@ public final class MailStore: Sendable {
|
|||||||
try dbWriter.write { db in
|
try dbWriter.write { db in
|
||||||
var inserted: [MessageRecord] = []
|
var inserted: [MessageRecord] = []
|
||||||
for message in messages {
|
for message in messages {
|
||||||
// Check if a message with this (mailboxId, uid) already exists
|
let count = try Int.fetchOne(db, sql:
|
||||||
let exists = try MessageRecord.fetchOne(db, sql:
|
"SELECT COUNT(*) FROM message WHERE mailboxId = ? AND uid = ?",
|
||||||
"SELECT id FROM message WHERE mailboxId = ? AND uid = ?",
|
|
||||||
arguments: [message.mailboxId, message.uid]
|
arguments: [message.mailboxId, message.uid]
|
||||||
)
|
) ?? 0
|
||||||
if exists == nil {
|
if count == 0 {
|
||||||
try message.insert(db)
|
try message.insert(db)
|
||||||
inserted.append(message)
|
inserted.append(message)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user