From c49a3d765d78572a1fe55e80545c0e90fca2a8ed Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Thu, 16 Jul 2026 18:10:31 +0530 Subject: [PATCH] feat(zero): add threads.byIds query with per-thread authz --- surfsense_web/zero/queries/chat.ts | 10 ++++++++++ surfsense_web/zero/queries/index.ts | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) 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,