From 90d6c4ab41bb097d7db354109e3616ff16778f0b Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 13 Jul 2025 17:22:11 -0400 Subject: Part data model (#950) --- packages/function/src/api.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'packages/function') diff --git a/packages/function/src/api.ts b/packages/function/src/api.ts index 150afd887..c5ac8b4a4 100644 --- a/packages/function/src/api.ts +++ b/packages/function/src/api.ts @@ -42,7 +42,11 @@ export class SyncServer extends DurableObject { async publish(key: string, content: any) { const sessionID = await this.getSessionID() - if (!key.startsWith(`session/info/${sessionID}`) && !key.startsWith(`session/message/${sessionID}/`)) + if ( + !key.startsWith(`session/info/${sessionID}`) && + !key.startsWith(`session/message/${sessionID}/`) && + !key.startsWith(`session/part/${sessionID}/`) + ) return new Response("Error: Invalid key", { status: 400 }) // store message @@ -71,7 +75,7 @@ export class SyncServer extends DurableObject { } public async getData() { - const data = await this.ctx.storage.list() + const data = (await this.ctx.storage.list()) as Map return Array.from(data.entries()) .filter(([key, _]) => key.startsWith("session/")) .map(([key, content]) => ({ key, content })) @@ -207,8 +211,13 @@ export default { return } if (type === "message") { - const [, messageID] = splits - messages[messageID] = d.content + messages[d.content.id] = { + parts: [], + ...d.content, + } + } + if (type === "part") { + messages[d.content.messageID].parts.push(d.content) } }) -- cgit v1.2.3