From e27a48edb52fe695e1a805265f023d4f830b1a26 Mon Sep 17 00:00:00 2001 From: Max Koon <22125083+k2on@users.noreply.github.com> Date: Tue, 14 Oct 2025 19:06:52 -0400 Subject: [PATCH] feat: add drizzle --- api/src/auth.ts | 10 +- api/src/db.ts | 9 + api/src/zero.ts | 10 +- app/index.tsx | 6 +- package.json | 6 +- pnpm-lock.yaml | 578 +++++++++++++++++++++++++++++--- pnpm-workspace.yaml | 3 + process-compose.yaml | 7 + shared/drizzle.config.ts | 14 + shared/package.json | 10 +- shared/src/db/client.ts | 10 + shared/src/db/index.ts | 6 + shared/src/db/schema/index.ts | 2 + shared/src/db/schema/private.ts | 94 ++++++ shared/src/db/schema/public.ts | 24 ++ shared/src/index.ts | 2 +- shared/src/mutators.ts | 6 + shared/src/queries.ts | 8 +- shared/src/schema.ts | 27 +- shared/src/zero-schema.gen.ts | 165 +++++++++ 20 files changed, 920 insertions(+), 77 deletions(-) create mode 100644 api/src/db.ts create mode 100644 shared/drizzle.config.ts create mode 100644 shared/src/db/client.ts create mode 100644 shared/src/db/index.ts create mode 100644 shared/src/db/schema/index.ts create mode 100644 shared/src/db/schema/private.ts create mode 100644 shared/src/db/schema/public.ts create mode 100644 shared/src/zero-schema.gen.ts diff --git a/api/src/auth.ts b/api/src/auth.ts index 2fd8666..3625d90 100644 --- a/api/src/auth.ts +++ b/api/src/auth.ts @@ -1,11 +1,15 @@ import { betterAuth } from "better-auth"; +import { drizzleAdapter } from "better-auth/adapters/drizzle"; import { genericOAuth } from "better-auth/plugins"; import { expo } from "@better-auth/expo"; -import { Pool } from "pg"; +import { drizzleSchema } from "@money/shared/db"; +import { db } from "./db"; export const auth = betterAuth({ - database: new Pool({ - connectionString: process.env.DATABASE_URL, + database: drizzleAdapter(db, { + schema: drizzleSchema, + provider: "pg", + usePlural: true, }), trustedOrigins: ["money://", "http://localhost:8081"], plugins: [ diff --git a/api/src/db.ts b/api/src/db.ts new file mode 100644 index 0000000..7bc4768 --- /dev/null +++ b/api/src/db.ts @@ -0,0 +1,9 @@ +import { getDb } from "@money/shared/db"; + +if (!process.env.ZERO_UPSTREAM_DB) { + throw new Error("ZERO_UPSTREAM_DB is not set"); +} + +export const db = getDb({ + connectionString: process.env.ZERO_UPSTREAM_DB, +}); diff --git a/api/src/zero.ts b/api/src/zero.ts index 8055fc5..9786c10 100644 --- a/api/src/zero.ts +++ b/api/src/zero.ts @@ -13,6 +13,7 @@ import { createMutators as createMutatorsShared, queries, schema, + type Mutators, } from "@money/shared"; import type { AuthData } from "@money/shared/auth"; import { getHono } from "./hono"; @@ -25,11 +26,18 @@ const processor = new PushProcessor( ), ); +const createMutators = (authData: AuthData | null) => { + const mutators = createMutatorsShared(authData); + return { + ...mutators, + } as const satisfies Mutators; +} + const zero = getHono() .post("/mutate", async (c) => { const authData = c.get("auth"); - const result = await processor.process(createMutatorsShared(authData), c.req.raw); + const result = await processor.process(createMutators(authData), c.req.raw); return c.json(result); }) diff --git a/app/index.tsx b/app/index.tsx index 292f05e..49da189 100644 --- a/app/index.tsx +++ b/app/index.tsx @@ -12,6 +12,7 @@ export default function HomeScreen() { } const z = useZero(); const [transactions] = useQuery(queries.allTransactions(session)); + const [user] = useQuery(queries.me(session)); const onNew = () => { z.mutate.transaction.create({ @@ -22,10 +23,13 @@ export default function HomeScreen() { return ( - Hello {session?.user.name} + Hello {user?.name}