refactor(db): collapse three markRead variants into markMessageReadForReader (P1-16)

This commit is contained in:
ZacharyZhang-NY committed 2026-04-16 22:50:40 -04:00
1 parent 62050c9c05
commit 43a03aa5e9
4 files changed
+3 -35

No files matched your search

+1 -1
View File
@@ -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 });
});
-2
View File
@@ -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 ──────────────────────────────────────────────
-30
View File
@@ -227,19 +227,6 @@ export function buildMessageMethods(
return readAll<AgentMessageRecord>(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);
},
};
}
+2 -2
View File
@@ -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);