Kadak
Framework Guides

Express

Build API routes with KadakORM and explicit validation.

Express

Problem: request payload bugs leak into database writes.

Solution: validate with table validators before calling insert().

import express from 'express'
import { connect, table } from '@shyk/kadak-orm'

const users = table('users', {
  id: 'id',
  email: 'email',
  name: 'text',
})

const db = connect('postgres://postgres:postgres@localhost:5432/kadak_demo', { users })

const app = express()
app.use(express.json())

app.get('/users', async (_req, res) => {
  const rows = await db.users.findMany({ $limit: 50, $order: { id: 'desc' } })
  res.json(rows)
})

app.post('/users', async (req, res) => {
  const parsed = users.insertValidator().safeParse(req.body)
  if (!parsed.success) return res.status(400).json(parsed.error.flatten())

  const row = await db.users.insert(parsed.data)
  res.status(201).json(row)
})

app.listen(3000)

On this page