Skip to main content

API Overview

Complete reference for the @casekit/orm API.

Creating an ORM Instance

import { orm, type Config } from "@casekit/orm";

const db = orm(config);
await db.connect();

Core Methods

Query Methods

MethodDescriptionReturns
findOne(model, query)Find a single recordTyped object (throws if not found)
findMany(model, query)Find multiple recordsTyped object array
count(model, query)Count matching recordsNumber

Mutation Methods

MethodDescriptionReturns
createOne(model, query)Insert one recordReturned fields or row count
createMany(model, query)Insert multiple recordsReturned fields or row count
updateOne(model, query)Update exactly one recordReturned fields or row count
updateMany(model, query)Update multiple recordsReturned fields or row count
deleteOne(model, query)Delete exactly one recordReturned fields or row count
deleteMany(model, query)Delete multiple recordsRow count

Connection Methods

MethodDescription
connect()Establish database connection
close()Close database connection
transact(fn, options?)Execute operations in a transaction
query(schema, sql)Execute raw SQL with type safety

Utility Methods

MethodDescription
middleware(middlewares)Apply middleware, returns new ORM instance
restrict(models)Restrict access to specific models

Query Parameters

FindParams

interface FindParams {
select: string[]; // Required: fields to return
include?: IncludeClause; // Optional: related records
where?: WhereClause; // Optional: filter conditions
orderBy?: [string, "asc" | "desc"][]; // Optional: sort order
limit?: number; // Optional: max records
offset?: number; // Optional: skip records
for?: "update" | "no key update" | "share" | "key share"; // Row locking
}

CountParams

interface CountParams {
where?: WhereClause; // Optional: filter conditions
}

CreateOneParams

interface CreateOneParams {
values: Record<string, any>; // Required: field values
returning?: string[]; // Optional: fields to return
onConflict?: { do: "nothing" }; // Optional: conflict handling
}

CreateManyParams

interface CreateManyParams {
values: Record<string, any>[]; // Required: array of field values
returning?: string[]; // Optional: fields to return
}

UpdateParams

interface UpdateParams {
set: Record<string, any>; // Required: fields to update
where: WhereClause; // Required: filter conditions
returning?: string[]; // Optional: fields to return
}

DeleteParams

interface DeleteParams {
where: WhereClause; // Required: filter conditions
returning?: string[]; // Optional: fields to return
}

Include Clause

Load related records:

include: {
relationName: {
select: string[]; // Required: fields to return
include?: IncludeClause; // Optional: nested relations
where?: WhereClause; // Optional: filter
orderBy?: [string, "asc" | "desc"][];
limit?: number;
offset?: number;
}
}

Where Clause

Filter records using operators:

where: {
field: value, // Equality
field: { [$operator]: value }, // Comparison
[$or]: [clause, clause], // OR logic
[$and]: [clause, clause], // AND logic
}

Transaction Options

interface TransactOptions {
rollback?: boolean; // Force rollback (for testing)
}

Type Exports

import {
// Core
orm,
Orm,
Config,

// Model types
ModelDefinition,
ModelDefinitions,
ModelType,
ModelName,

// Field types
FieldDefinition,
FieldName,
FieldType,
RequiredField,
OptionalField,
NullableField,

// Relation types
RelationDefinition,
RelationName,
RelationModel,

// Query types
FindParams,
CountParams,
CreateOneParams,
CreateManyParams,
UpdateParams,
DeleteParams,

// Clause types
WhereClause,
SelectClause,
IncludeClause,
OrderByClause,
ReturningClause,

// Middleware
Middleware,

// Operators
$eq, $ne, $gt, $gte, $lt, $lte,
$in, $like, $ilike, $is, $not, $and, $or,
DefaultOperators,
} from "@casekit/orm";