From 43a03aa5e9cc533c319ff2611be124913b9c3a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Thu, 16 Apr 2026 22:50:40 -0400 Subject: [PATCH] refactor(db): collapse three markRead variants into markMessageReadForReader (P1-16) --- src/main/api-server/routes-messages.ts | 2 +- src/main/database.ts | 2 -- src/main/database/messages.ts | 30 ---------------------- tests/integration/autonomous-chain.spec.ts | 4 +-- 4 files changed, 3 insertions(+), 35 deletions(-) diff --git a/src/main/api-server/routes-messages.ts b/src/main/api-server/routes-messages.ts index 7558f285..571d252f 100644 --- a/src/main/api-server/routes-messages.ts +++ b/src/main/api-server/routes-messages.ts @@ -168,7 +168,7 @@ export function registerMessageRoutes(server: AgentApiServer) { server.json(res, 403, { error: "This message is not visible to the current agent" }); return; } - db.markAgentMessageRead(requireParam(params, "messageId"), companyId, token.agentId); + db.markMessageReadForReader(requireParam(params, "messageId"), companyId, token.agentId); onDomainChanged(); server.json(res, 200, { ok: true }); }); diff --git a/src/main/database.ts b/src/main/database.ts index a9b95520..7490a4cc 100644 --- a/src/main/database.ts +++ b/src/main/database.ts @@ -18,9 +18,7 @@ export class AppDatabase extends AppDatabaseBase { getAgentMessage(messageId: string, companyId: string) { return this.messages.getAgentMessage(messageId, companyId); } listAgentMessages(companyId: string, opts?: { agentId?: string; messageId?: string; channel?: string; channelTargetId?: string | null; unreadOnly?: boolean; limit?: number }) { return this.messages.listAgentMessages(companyId, opts); } searchMessages(companyId: string, query: string, opts?: { channel?: string; channelTargetId?: string | null; limit?: number }) { return this.messages.searchMessages(companyId, query, opts); } - markMessageRead(messageId: string, companyId: string) { return this.messages.markMessageRead(messageId, companyId); } markMessageReadForReader(messageId: string, companyId: string, readerAgentId?: string | null) { return this.messages.markMessageReadForReader(messageId, companyId, readerAgentId); } - markAgentMessageRead(messageId: string, companyId: string, agentId: string) { return this.messages.markAgentMessageRead(messageId, companyId, agentId); } // ─── Social & Browser Actions ────────────────────────────────────────────── diff --git a/src/main/database/messages.ts b/src/main/database/messages.ts index 192b61fd..ae5b9420 100644 --- a/src/main/database/messages.ts +++ b/src/main/database/messages.ts @@ -227,19 +227,6 @@ export function buildMessageMethods( return readAll(sql, ...params); }, - markMessageRead(messageId: string, companyId: string): void { - const ts = nowIso(); - getDb() - .prepare( - `insert into agent_message_reads (message_id, agent_id, read_at) - select id, ?, ? - from agent_messages - where id = ? and company_id = ? - on conflict(message_id, agent_id) do update set read_at = excluded.read_at`, - ) - .run(BOARD_READER_ID, ts, messageId, companyId); - }, - markMessageReadForReader( messageId: string, companyId: string, @@ -256,22 +243,5 @@ export function buildMessageMethods( ) .run(readerAgentId ?? BOARD_READER_ID, ts, messageId, companyId); }, - - markAgentMessageRead( - messageId: string, - companyId: string, - agentId: string, - ): void { - const ts = nowIso(); - getDb() - .prepare( - `insert into agent_message_reads (message_id, agent_id, read_at) - select id, ?, ? - from agent_messages - where id = ? and company_id = ? - on conflict(message_id, agent_id) do update set read_at = excluded.read_at`, - ) - .run(agentId, ts, messageId, companyId); - }, }; } diff --git a/tests/integration/autonomous-chain.spec.ts b/tests/integration/autonomous-chain.spec.ts index d91bbed2..9344b697 100644 --- a/tests/integration/autonomous-chain.spec.ts +++ b/tests/integration/autonomous-chain.spec.ts @@ -1195,7 +1195,7 @@ describe("Agent Messages", () => { body: "Hello", }); - db.markMessageRead(msgId, companyId); + db.markMessageReadForReader(msgId, companyId); const messages = db.listAgentMessages(companyId); const updatedMessage = messages.find((message) => message.id === msgId); expect(updatedMessage?.readAt).toBeTruthy(); @@ -1219,7 +1219,7 @@ describe("Agent Messages", () => { expect(recipientViewBefore).toHaveLength(1); expect(recipientViewBefore[0].id).toBe(msgId); - db.markAgentMessageRead(msgId, companyId, agentBId); + db.markMessageReadForReader(msgId, companyId, agentBId); const recipientViewAfter = db.listAgentMessages(companyId, { agentId: agentBId, unreadOnly: true }); expect(recipientViewAfter).toHaveLength(0);