Skip to content

Defined in: src/query/queryBuilder.ts:54

QueryBuilder is a helper class to build queries to the Arkiv DBChains. It can be used to fetch entities from the Arkiv DBChains. It follows the Builder pattern allowing chaining of methods.

The Arkiv client

new QueryBuilder(client): QueryBuilder

Defined in: src/query/queryBuilder.ts:67

ArkivClient

QueryBuilder

count(): Promise<number>

Defined in: src/query/queryBuilder.ts:316

Counts the entities from the query.

Promise<number>

The number of entities

const builder = new QueryBuilder(client)
const result = await builder.where(eq("name", "John")).count()
// result = 10

createdBy(createdBy): QueryBuilder

Defined in: src/query/queryBuilder.ts:95

Sets the createdBy filter

`0x${string}`

The address of the creator

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.createdBy("0x1234567890123456789012345678901234567890")

cursor(cursor): QueryBuilder

Defined in: src/query/queryBuilder.ts:228

Sets the cursor for the query - it is advances setting which rather shouldn’t be used manually but it is provided from query result if limit is used (pagination).

string

The cursor to set which tells to RPC Query server where to start or continue the query.

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.offset(10)

fetch(): Promise<QueryResult>

Defined in: src/query/queryBuilder.ts:283

Fetches the entities from the query. Re It will return a QueryResult instance which can be used to fetch the next and previous pages.

Promise<QueryResult>

The QueryResult instance QueryResult

const builder = new QueryBuilder(client)
const result = await builder.where(eq("name", "John")).fetch()
// result = { entities: [Entity, Entity, Entity], next: async () => QueryResult, previous: async () => QueryResult }

limit(limit): QueryBuilder

Defined in: src/query/queryBuilder.ts:214

Sets the limit for the query

number

The number of entities to return

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.limit(10)

orderBy(attributeName, attributeType, order?): this

Defined in: src/query/queryBuilder.ts:116

Sets the orderBy for the query. It can be called multiple times to order by multiple attributes. The order of the attributes is important. The first attribute is the primary order by attribute. You can use the helper functions asc() and desc() as input for this method.

string

The name of the attribute to order by

The type of the attribute to order by (string or number)

"string" | "number"

The order to set the order by (asc or desc)

"asc" | "desc"

this

The QueryBuilder instance

const builder = client.buildQuery()
builder.orderBy("name", "string", "desc")
builder.orderBy(asc("name", "string"))
builder.orderBy(desc("name", "string"))

orderBy(orderByAttribute): this

Defined in: src/query/queryBuilder.ts:129

Sets the orderBy for the query. This method takes the OrderByAttribute object as an argument and is mainly used to use the helper functions asc() and desc() to create the OrderByAttribute instances.

OrderByAttribute

The OrderByAttribute instance to set

this

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.orderBy(asc("name", "string"))
builder.orderBy(desc("name", "string"))

ownedBy(ownedBy): QueryBuilder

Defined in: src/query/queryBuilder.ts:81

Sets the ownedBy filter

`0x${string}`

The address of the owner

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.ownedBy("0x1234567890123456789012345678901234567890")

validAtBlock(validAtBlock): QueryBuilder

Defined in: src/query/queryBuilder.ts:243

Sets the validAtBlock for the query which tells at which block height the state we are intested. If not set, the latest block is used.

bigint

The block number to set

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.validAtBlock(10000)

where(predicates): QueryBuilder

Defined in: src/query/queryBuilder.ts:264

Sets the predicates for the query limiting the results. It can be a single predicate or an array of predicates combined with ‘and’. Predicates can be nested using ‘or’ and ‘and’ predicates.

The predicates to set

Predicate | Predicate[]

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.where(eq("name", "John"))
builder.where([eq("name", "John"), eq("age", 30)])
builder.where([eq("name", "John"), or([eq("age", 30), eq("age", 31)])])
builder.where([eq("name", "John"), and([eq("age", 30), eq("age", 31)])])
builder.where([eq("name", "John"), or([eq("age", 30), and([eq("age", 31), eq("age", 32)])])])
builder.where([eq("name", "John"), and([eq("age", 30), or([eq("age", 31), eq("age", 32)])])])
builder.where([eq("name", "John"), and([eq("age", 30), or([eq("age", 31), and([eq("age", 32), eq("age", 33)])])])])

withAttributes(withAttributes): QueryBuilder

Defined in: src/query/queryBuilder.ts:172

Sets the withAttributes flag which will return the attributes for the entities if true

boolean = true

The boolean value to set

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.withAttributes(true)

withMetadata(withMetadata): QueryBuilder

Defined in: src/query/queryBuilder.ts:186

Sets the withMetadata flag which will return the metadata (like owner, expiredAt, etc.) for the entities if true

boolean = true

The boolean value to set

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.withMetadata(true)

withPayload(withPayload): QueryBuilder

Defined in: src/query/queryBuilder.ts:200

Sets the withPayload flag which will return the payload for the entities if true

boolean = true

The boolean value to set

QueryBuilder

The QueryBuilder instance

const builder = new QueryBuilder(client)
builder.withPayload(true)