mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-28 21:49:40 +02:00
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.
This commit is contained in:
parent
af2bd744fb
commit
da8f90bfe2
9 changed files with 75 additions and 4 deletions
2
surfsense_web/types/zero.d.ts
vendored
2
surfsense_web/types/zero.d.ts
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
import type { Schema } from "@/zero/schema";
|
import type { Schema } from "@/zero/schema/index";
|
||||||
|
|
||||||
export type Context =
|
export type Context =
|
||||||
| {
|
| {
|
||||||
|
|
|
||||||
26
surfsense_web/zero/queries/chat.ts
Normal file
26
surfsense_web/zero/queries/chat.ts
Normal file
|
|
@ -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(),
|
||||||
|
),
|
||||||
|
};
|
||||||
21
surfsense_web/zero/queries/documents.ts
Normal file
21
surfsense_web/zero/queries/documents.ts
Normal file
|
|
@ -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"),
|
||||||
|
),
|
||||||
|
};
|
||||||
11
surfsense_web/zero/queries/inbox.ts
Normal file
11
surfsense_web/zero/queries/inbox.ts
Normal file
|
|
@ -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"),
|
||||||
|
),
|
||||||
|
};
|
||||||
13
surfsense_web/zero/queries/index.ts
Normal file
13
surfsense_web/zero/queries/index.ts
Normal file
|
|
@ -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,
|
||||||
|
});
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { createSchema, createBuilder, relationships } from "@rocicorp/zero";
|
import { createSchema, createBuilder, relationships } from "@rocicorp/zero";
|
||||||
import { chatCommentTable, chatSessionStateTable, newChatMessageTable } from "./tables/chat";
|
import { chatCommentTable, chatSessionStateTable, newChatMessageTable } from "./chat";
|
||||||
import { documentTable, searchSourceConnectorTable } from "./tables/documents";
|
import { documentTable, searchSourceConnectorTable } from "./documents";
|
||||||
import { notificationTable } from "./tables/inbox";
|
import { notificationTable } from "./inbox";
|
||||||
|
|
||||||
const chatCommentRelationships = relationships(chatCommentTable, ({ one }) => ({
|
const chatCommentRelationships = relationships(chatCommentTable, ({ one }) => ({
|
||||||
message: one({
|
message: one({
|
||||||
Loading…
Add table
Add a link
Reference in a new issue