SurfSense/surfsense_web/zero/schema/chat.ts
CREDO23 da8f90bfe2 feat: add Zero queries for all 6 synced tables
Define named queries matching each Electric hook's data needs:
- notifications.byUser (use-inbox)
- documents.bySpace (use-documents, use-documents-processing)
- connectors.bySpace (use-connectors-electric)
- messages.byThread (use-messages-electric)
- comments.byThread (use-comments-electric)
- chatSession.byThread (use-chat-session-state)

Also moves schema files from zero/tables/ to zero/schema/ for
consistent modular folder structure.
2026-03-23 17:54:43 +02:00

34 lines
1,022 B
TypeScript

import { table, string, number, json } from "@rocicorp/zero";
export const newChatMessageTable = table("new_chat_messages")
.columns({
id: number(),
role: string(),
content: json(),
threadId: number().from("thread_id"),
authorId: string().optional().from("author_id"),
createdAt: number().from("created_at"),
})
.primaryKey("id");
export const chatCommentTable = table("chat_comments")
.columns({
id: number(),
messageId: number().from("message_id"),
threadId: number().from("thread_id"),
parentId: number().optional().from("parent_id"),
authorId: string().optional().from("author_id"),
content: string(),
createdAt: number().from("created_at"),
updatedAt: number().from("updated_at"),
})
.primaryKey("id");
export const chatSessionStateTable = table("chat_session_state")
.columns({
id: number(),
threadId: number().from("thread_id"),
aiRespondingToUserId: string().optional().from("ai_responding_to_user_id"),
updatedAt: number().from("updated_at"),
})
.primaryKey("id");