feat: add zero

This commit is contained in:
Max Koon
2025-10-13 21:10:46 -04:00
parent b4d13e6a9f
commit 92d297e2c9
36 changed files with 3318 additions and 455 deletions

25
shared/src/auth.ts Normal file
View File

@@ -0,0 +1,25 @@
import { z } from "zod";
export const sessionSchema = z.object({
id: z.string(),
userId: z.string(),
expiresAt: z.date(),
});
export const userSchema = z.object({
id: z.string(),
email: z.string(),
emailVerified: z.boolean(),
name: z.string(),
createdAt: z.date(),
updatedAt: z.date(),
});
export const authDataSchema = z.object({
session: sessionSchema,
user: userSchema,
});
export type Session = z.infer<typeof sessionSchema>;
export type User = z.infer<typeof userSchema>;
export type AuthData = z.infer<typeof authDataSchema>;

2
shared/src/index.ts Normal file
View File

@@ -0,0 +1,2 @@
export * from "./schema";
export * from "./queries";

9
shared/src/queries.ts Normal file
View File

@@ -0,0 +1,9 @@
import { syncedQuery } from "@rocicorp/zero";
import { z } from "zod";
import { builder } from "@money/shared";
export const queries = {
allTransactions: syncedQuery('allTransactions', z.tuple([]), () =>
builder.transaction.limit(10)
),
};

24
shared/src/schema.ts Normal file
View File

@@ -0,0 +1,24 @@
import { createSchema, table, string, number, createBuilder, definePermissions } from "@rocicorp/zero";
const transaction = table('transaction')
.columns({
id: string(),
user_id: string(),
name: string(),
amount: number(),
})
.primaryKey('id');
export const schema = createSchema({
tables: [transaction],
enableLegacyMutators: false,
enableLegacyQueries: false,
});
export const builder = createBuilder(schema);
export const permissions = definePermissions(schema, () => ({}));
export type Schema = typeof schema;