diff --git a/surfsense_web/zero/queries/chat.ts b/surfsense_web/zero/queries/chat.ts index 40e09a6ee..06969a4e9 100644 --- a/surfsense_web/zero/queries/chat.ts +++ b/surfsense_web/zero/queries/chat.ts @@ -29,3 +29,13 @@ export const chatSessionQueries = { .one() ), }; + +export const threadQueries = { + byIds: defineQuery(z.object({ ids: z.array(z.number()) }), ({ args: { ids }, ctx }) => + constrainToAllowedSpaces(zql.new_chat_threads, ctx) + .where("id", "IN", ids) + .where(({ or, cmp }) => + or(cmp("createdById", ctx?.userId ?? ""), cmp("visibility", "SEARCH_SPACE")) + ) + ), +}; diff --git a/surfsense_web/zero/queries/index.ts b/surfsense_web/zero/queries/index.ts index 45df8fa98..2e51bf9a8 100644 --- a/surfsense_web/zero/queries/index.ts +++ b/surfsense_web/zero/queries/index.ts @@ -1,6 +1,6 @@ import { defineQueries } from "@rocicorp/zero"; import { automationRunQueries } from "./automations"; -import { chatSessionQueries, commentQueries, messageQueries } from "./chat"; +import { chatSessionQueries, commentQueries, messageQueries, threadQueries } from "./chat"; import { connectorQueries, documentQueries } from "./documents"; import { folderQueries } from "./folders"; import { notificationQueries } from "./inbox"; @@ -15,6 +15,7 @@ export const queries = defineQueries({ messages: messageQueries, comments: commentQueries, chatSession: chatSessionQueries, + threads: threadQueries, user: userQueries, automationRuns: automationRunQueries, podcasts: podcastQueries,