Notr Logo
API Reference

Core CRUD (crud)

Create, read, update, and destroy with a fluent, type-safe API.

Overview

import { crud } from '@remcostoeten/drizzleasy/server'
  • All operations return { data?, error? }
  • read() is callable and supports .where() and .byId()

create()

crud.create<T>(tableName: string)(data: TCreateInput<T>): Promise<TResult<T[]>>
  • Inserts one or more rows, returns inserted rows
type TUser = { id: string; name: string; email: string }

async function createUser() {
  return crud.create<TUser>('users')({ name: 'Jane', email: 'jane@example.com' })
}

read()

crud.read<T>(tableName: string): {
  (): Promise<TResult<T[]>>
  where(condition: TWhereClause<T>): any
  byId(id: string | number): Promise<TResult<T | null>>
}
async function listUsers() {
  return crud.read<TUser>('users')()
}

async function filtered() {
  return crud
    .read<TUser>('users')
    .where({ status: 'active' })
    .where({ name: '*john*' })()
}

async function getUser(id: string) {
  return crud.read<TUser>('users').byId(id)
}

update()

crud.update<T>(tableName: string)(id: string | number, data: TUpdateInput<T>): Promise<TResult<T[]>>
async function renameUser(id: string) {
  return crud.update<TUser>('users')(id, { name: 'Jane' })
}

destroy()

crud.destroy<T>(tableName: string)(id: string | number): Promise<TResult<T[]>>
async function removeUser(id: string) {
  return crud.destroy<TUser>('users')(id)
}