Framework Guides
Next.js
Use KadakORM in App Router with stable connections and safe mutations.
Next.js
Problem: hot reload can create too many DB connections in development.
Solution: cache one KadakORM client on globalThis.
lib/db.ts
import { connect } from '@shyk/kadak-orm'
import { users } from '@/lib/schema'
const tables = { users }
const globalForDb = globalThis as unknown as {
db?: ReturnType<typeof connect>
}
export const db = globalForDb.db ?? connect('postgres://postgres:postgres@localhost:5432/kadak_demo', tables)
if (process.env.NODE_ENV !== 'production') {
globalForDb.db = db
}Read in a server component
import { db } from '@/lib/db'
export default async function UsersPage() {
const users = await db.users.findMany({ $limit: 20, $order: { createdAt: 'desc' } })
return <pre>{JSON.stringify(users, null, 2)}</pre>
}Validate in a server action
'use server'
import { db } from '@/lib/db'
import { users } from '@/lib/schema'
export async function createUserAction(payload: unknown) {
const parsed = users.insertValidator().safeParse(payload)
if (!parsed.success) return { ok: false, error: parsed.error.flatten() }
await db.users.insert(parsed.data)
return { ok: true }
}