TurboJet
Database

Use database client

Query and mutate data with db from @repo/database.

The database client is a cached PrismaClient exported as db from @repo/database (packages/database/src/index.ts). It is generated from prisma/schema.prisma.

Use it only in server-side code. Prefer calling db from services under packages/api/src/modules/*/service.ts rather than from React components.

For full Prisma CRUD docs, see the official Prisma Client guide.

Querying records

import { db } from "@repo/database";

const users = await db.user.findMany({
	orderBy: { createdAt: "desc" },
});

Creating records

import { db } from "@repo/database";
import { randomUUID } from "node:crypto";

const user = await db.user.create({
	data: {
		id: randomUUID(),
		email: "[email protected]",
		name: "Test User",
		emailVerified: true,
	},
});

Better Auth normally creates users through sign-in flows. Direct create is useful in seeds and admin tools.

Updating records

import { db } from "@repo/database";

const updatedUser = await db.user.update({
	where: { id: userId },
	data: {
		name: "Updated User",
	},
});

Deleting records

import { db } from "@repo/database";

const deletedUser = await db.user.delete({
	where: { id: userId },
});

Enums and types

import { db, $Enums, Prisma } from "@repo/database";
// or: import { $Enums } from "@repo/database/enums";

if (user.role === $Enums.Role.ADMIN) {
	// …
}

On this page