feat(zero): add userTable + queries.user.me() synced query

This commit is contained in:
Anish Sarkar 2026-05-02 03:31:50 +05:30
parent e9d964514b
commit 05eef5a7db
4 changed files with 26 additions and 0 deletions

View file

@ -3,6 +3,7 @@ import { chatSessionQueries, commentQueries, messageQueries } from "./chat";
import { connectorQueries, documentQueries } from "./documents";
import { folderQueries } from "./folders";
import { notificationQueries } from "./inbox";
import { userQueries } from "./user";
export const queries = defineQueries({
notifications: notificationQueries,
@ -12,4 +13,5 @@ export const queries = defineQueries({
messages: messageQueries,
comments: commentQueries,
chatSession: chatSessionQueries,
user: userQueries,
});

View file

@ -0,0 +1,11 @@
import { defineQuery } from "@rocicorp/zero";
import { z } from "zod";
import { zql } from "../schema/index";
export const userQueries = {
me: defineQuery(z.object({}), ({ ctx }) => {
const userId = ctx?.userId;
if (!userId) return zql.user.where("id", "__none__").one();
return zql.user.where("id", userId).one();
}),
};

View file

@ -3,6 +3,7 @@ import { chatCommentTable, chatSessionStateTable, newChatMessageTable } from "./
import { documentTable, searchSourceConnectorTable } from "./documents";
import { folderTable } from "./folders";
import { notificationTable } from "./inbox";
import { userTable } from "./user";
const chatCommentRelationships = relationships(chatCommentTable, ({ one }) => ({
message: one({
@ -34,6 +35,7 @@ export const schema = createSchema({
newChatMessageTable,
chatCommentTable,
chatSessionStateTable,
userTable,
],
relationships: [chatCommentRelationships, newChatMessageRelationships],
});

View file

@ -0,0 +1,11 @@
import { number, string, table } from "@rocicorp/zero";
export const userTable = table("user")
.columns({
id: string(),
pagesLimit: number().from("pages_limit"),
pagesUsed: number().from("pages_used"),
premiumTokensLimit: number().from("premium_tokens_limit"),
premiumTokensUsed: number().from("premium_tokens_used"),
})
.primaryKey("id");