diff --git a/surfsense_web/types/zero.d.ts b/surfsense_web/types/zero.d.ts index 5b74bce33..69c9e2402 100644 --- a/surfsense_web/types/zero.d.ts +++ b/surfsense_web/types/zero.d.ts @@ -1,4 +1,4 @@ -import type { Schema } from "@/zero/schema"; +import type { Schema } from "@/zero/schema/index"; export type Context = | { diff --git a/surfsense_web/zero/queries/chat.ts b/surfsense_web/zero/queries/chat.ts new file mode 100644 index 000000000..45ffa7ea2 --- /dev/null +++ b/surfsense_web/zero/queries/chat.ts @@ -0,0 +1,26 @@ +import { defineQuery } from "@rocicorp/zero"; +import { z } from "zod"; +import { zql } from "../schema/index"; + +export const messageQueries = { + byThread: defineQuery( + z.object({ threadId: z.number() }), + ({ args: { threadId } }) => + zql.new_chat_messages.where("threadId", threadId).orderBy("createdAt", "asc"), + ), +}; + +export const commentQueries = { + byThread: defineQuery( + z.object({ threadId: z.number() }), + ({ args: { threadId } }) => + zql.chat_comments.where("threadId", threadId).orderBy("createdAt", "asc"), + ), +}; + +export const chatSessionQueries = { + byThread: defineQuery( + z.object({ threadId: z.number() }), + ({ args: { threadId } }) => zql.chat_session_state.where("threadId", threadId).one(), + ), +}; diff --git a/surfsense_web/zero/queries/documents.ts b/surfsense_web/zero/queries/documents.ts new file mode 100644 index 000000000..aa34bf718 --- /dev/null +++ b/surfsense_web/zero/queries/documents.ts @@ -0,0 +1,21 @@ +import { defineQuery } from "@rocicorp/zero"; +import { z } from "zod"; +import { zql } from "../schema/index"; + +export const documentQueries = { + bySpace: defineQuery( + z.object({ searchSpaceId: z.number() }), + ({ args: { searchSpaceId } }) => + zql.documents.where("searchSpaceId", searchSpaceId).orderBy("createdAt", "desc"), + ), +}; + +export const connectorQueries = { + bySpace: defineQuery( + z.object({ searchSpaceId: z.number() }), + ({ args: { searchSpaceId } }) => + zql.search_source_connectors + .where("searchSpaceId", searchSpaceId) + .orderBy("createdAt", "desc"), + ), +}; diff --git a/surfsense_web/zero/queries/inbox.ts b/surfsense_web/zero/queries/inbox.ts new file mode 100644 index 000000000..6221ef345 --- /dev/null +++ b/surfsense_web/zero/queries/inbox.ts @@ -0,0 +1,11 @@ +import { defineQuery } from "@rocicorp/zero"; +import { z } from "zod"; +import { zql } from "../schema/index"; + +export const notificationQueries = { + byUser: defineQuery( + z.object({ userId: z.string() }), + ({ args: { userId } }) => + zql.notifications.where("userId", userId).orderBy("createdAt", "desc"), + ), +}; diff --git a/surfsense_web/zero/queries/index.ts b/surfsense_web/zero/queries/index.ts new file mode 100644 index 000000000..893e677c4 --- /dev/null +++ b/surfsense_web/zero/queries/index.ts @@ -0,0 +1,13 @@ +import { defineQueries } from "@rocicorp/zero"; +import { chatSessionQueries, commentQueries, messageQueries } from "./chat"; +import { connectorQueries, documentQueries } from "./documents"; +import { notificationQueries } from "./inbox"; + +export const queries = defineQueries({ + notifications: notificationQueries, + documents: documentQueries, + connectors: connectorQueries, + messages: messageQueries, + comments: commentQueries, + chatSession: chatSessionQueries, +}); diff --git a/surfsense_web/zero/tables/chat.ts b/surfsense_web/zero/schema/chat.ts similarity index 100% rename from surfsense_web/zero/tables/chat.ts rename to surfsense_web/zero/schema/chat.ts diff --git a/surfsense_web/zero/tables/documents.ts b/surfsense_web/zero/schema/documents.ts similarity index 100% rename from surfsense_web/zero/tables/documents.ts rename to surfsense_web/zero/schema/documents.ts diff --git a/surfsense_web/zero/tables/inbox.ts b/surfsense_web/zero/schema/inbox.ts similarity index 100% rename from surfsense_web/zero/tables/inbox.ts rename to surfsense_web/zero/schema/inbox.ts diff --git a/surfsense_web/zero/schema.ts b/surfsense_web/zero/schema/index.ts similarity index 85% rename from surfsense_web/zero/schema.ts rename to surfsense_web/zero/schema/index.ts index c1f7cf951..1c3e89151 100644 --- a/surfsense_web/zero/schema.ts +++ b/surfsense_web/zero/schema/index.ts @@ -1,7 +1,7 @@ import { createSchema, createBuilder, relationships } from "@rocicorp/zero"; -import { chatCommentTable, chatSessionStateTable, newChatMessageTable } from "./tables/chat"; -import { documentTable, searchSourceConnectorTable } from "./tables/documents"; -import { notificationTable } from "./tables/inbox"; +import { chatCommentTable, chatSessionStateTable, newChatMessageTable } from "./chat"; +import { documentTable, searchSourceConnectorTable } from "./documents"; +import { notificationTable } from "./inbox"; const chatCommentRelationships = relationships(chatCommentTable, ({ one }) => ({ message: one({