VibORM

Client API Reference

Complete reference for client query APIs

Client API Reference

Complete reference for all client query and mutation APIs.

Query Operations

findMany

client.model.findMany({
  where?: WhereInput,
  orderBy?: OrderByInput,
  take?: number,
  skip?: number,
  cursor?: UniqueInput,
  select?: SelectInput,
  include?: IncludeInput,
  distinct?: string[],
})

Returns: T[]

findFirst

client.model.findFirst({
  where?: WhereInput,
  orderBy?: OrderByInput,
  take?: number,
  skip?: number,
  cursor?: UniqueInput,
  select?: SelectInput,
  include?: IncludeInput,
})

Returns: T | null

findUnique

client.model.findUnique({
  where: UniqueInput,
  select?: SelectInput,
  include?: IncludeInput,
})

Returns: T | null

findFirstOrThrow / findUniqueOrThrow

Same as above but throws if not found.

Returns: T

exist

client.model.exist({
  where?: WhereInput,
})

Returns: boolean

Mutation Operations

create

client.model.create({
  data: CreateInput,
  select?: SelectInput,
  include?: IncludeInput,
})

Returns: T

createMany

client.model.createMany({
  data: CreateInput[],
  skipDuplicates?: boolean,
})

Returns: { count: number }

update

client.model.update({
  where: UniqueInput,
  data: UpdateInput,
  select?: SelectInput,
  include?: IncludeInput,
})

Returns: T

updateMany

client.model.updateMany({
  where?: WhereInput,
  data: UpdateInput,
})

Returns: { count: number }

delete

client.model.delete({
  where: UniqueInput,
  select?: SelectInput,
  include?: IncludeInput,
})

Returns: T

deleteMany

client.model.deleteMany({
  where?: WhereInput,
})

Returns: { count: number }

upsert

client.model.upsert({
  where: UniqueInput,
  create: CreateInput,
  update: UpdateInput,
  select?: SelectInput,
  include?: IncludeInput,
})

Returns: T

Aggregate Operations

count

client.model.count({
  where?: WhereInput,
  select?: { _all?: boolean, field?: boolean },
})

Returns: number or { _all: number, field: number }

aggregate

client.model.aggregate({
  where?: WhereInput,
  _count?: true | { field: true },
  _avg?: { field: true },
  _sum?: { field: true },
  _min?: { field: true },
  _max?: { field: true },
})

groupBy

client.model.groupBy({
  by: string[],
  where?: WhereInput,
  having?: HavingInput,
  orderBy?: OrderByInput,
  take?: number,
  skip?: number,
  _count?: true | { field: true },
  _avg?: { field: true },
  _sum?: { field: true },
  _min?: { field: true },
  _max?: { field: true },
})

Filter Operators

Common

OperatorDescription
equalsExact match
notNegation
inMatch any
notInMatch none

String

OperatorDescription
containsSubstring
startsWithPrefix
endsWithSuffix
modeCase sensitivity

Number / DateTime

OperatorDescription
ltLess than
lteLess or equal
gtGreater than
gteGreater or equal

Array

OperatorDescription
hasContains value
hasEveryContains all
hasSomeContains any
isEmptyIs empty

JSON

OperatorDescription
path + equalsMatch path value
string_containsJSON contains string
array_containsArray contains value

Logical

OperatorDescription
ANDAll conditions
ORAny condition
NOTNegation

Relation Filters

To-One

OperatorDescription
isMatch related
isNotExclude matching

To-Many

OperatorDescription
someAt least one
everyAll match
noneNo matches

Nested Writes

Create

OperatorDescription
createCreate nested
connectLink existing
connectOrCreateLink or create

Update

OperatorDescription
updateUpdate nested
updateManyUpdate multiple
upsertCreate or update
setReplace all
disconnectUnlink
deleteDelete nested
deleteManyDelete multiple

Ordering

orderBy: {
  field: "asc" | "desc",
  // or
  field: { sort: "asc" | "desc", nulls: "first" | "last" },
  // or relation
  relation: { field: "asc" | "desc" },
  // or count
  relation: { _count: "asc" | "desc" },
}

On this page