Notr Logo
API Reference

Factory Functions

createFn, readFn, updateFn, destroyFn for reusable, typed CRUD.

import { createFn, readFn, updateFn, destroyFn } from '@remcostoeten/drizzleasy/server'

createFn()

function createFn<T extends TEntity = TEntity>(): (
  tableName: string
) => (data: TCreateInput<T>) => Promise<TResult<T[]>>
type TUser = { id: string; name: string; email: string }

function makeCreate() {
  return createFn<TUser>()
}

async function run() {
  const create = makeCreate()
  await create('users')({ name: 'Jane', email: 'jane@example.com' })
}

readFn()

function readFn<T extends TEntity = TEntity>(): (
  tableName: string
) => {
  (): Promise<TResult<T[]>>
  byId(id: string | number): Promise<TResult<T | null>>
  where(condition: TWhereClause<T>): any
}
function makeRead() {
  return readFn<TUser>()
}

async function run() {
  const read = makeRead()
  await read('users')()
  await read('users').where({ status: 'active' })()
}

updateFn()

function updateFn<T extends TEntity = TEntity>(): (
  tableName: string
) => (id: string | number, data: TUpdateInput<T>) => Promise<TResult<T[]>>

destroyFn()

function destroyFn<T extends TEntity = TEntity>(): (
  tableName: string
) => (id: string | number) => Promise<TResult<T[]>>