API Reference
classes
Modelquerybuilder

@coasys/ad4m / Exports / ModelQueryBuilder

Class: ModelQueryBuilder<T>

Query builder for Ad4mModel queries. Allows building queries with a fluent interface and either running them once or subscribing to updates.

Example

const builder = Recipe.query(perspective)
  .where({ category: "Dessert" })
  .order({ rating: "DESC" })
  .limit(10);
 
// Run once
const recipes = await builder.run();
 
// Or subscribe to updates
await builder.subscribe(recipes => {
  console.log("Updated recipes:", recipes);
});

Type parameters

NameType
Textends Ad4mModel

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new ModelQueryBuilder<T>(perspective, ctor, query?)

Type parameters

NameType
Textends Ad4mModel<T>

Parameters

NameType
perspectivePerspectiveProxy
ctortypeof Ad4mModel
query?Query

Defined in

model/Ad4mModel.ts:828

Properties

ctor

Private ctor: typeof Ad4mModel

Defined in

model/Ad4mModel.ts:826


modelClassName

Private modelClassName: string = null

Defined in

model/Ad4mModel.ts:825


perspective

Private perspective: PerspectiveProxy

Defined in

model/Ad4mModel.ts:823


queryParams

Private queryParams: Query = {}

Defined in

model/Ad4mModel.ts:824

Methods

collections

collections(collections): ModelQueryBuilder<T>

Specifies which collections to include in the results.

Parameters

NameTypeDescription
collectionsstring[]Array of collection names to include

Returns

ModelQueryBuilder<T>

The query builder for chaining

Example

.collections(["ingredients", "steps"])

Defined in

model/Ad4mModel.ts:946


count

count(): Promise<number>

Gets the total count of matching entities.

Returns

Promise<number>

Total count

Example

const totalDesserts = await Recipe.query(perspective)
  .where({ category: "Dessert" })
  .count();

Defined in

model/Ad4mModel.ts:1021


countSubscribe

countSubscribe(callback): Promise<number>

Subscribes to count updates for matching entities.

Parameters

NameTypeDescription
callback(count: number) => voidFunction to call with updated count

Returns

Promise<number>

Initial count

Example

await Recipe.query(perspective)
  .where({ status: "active" })
  .countSubscribe(count => {
    console.log("Active items:", count);
  });

Defined in

model/Ad4mModel.ts:1042


get

get(): Promise<T[]>

Executes the query once and returns the results.

Returns

Promise<T[]>

Array of matching entities

Example

const recipes = await Recipe.query(perspective)
  .where({ category: "Dessert" })
  .get();

Defined in

model/Ad4mModel.ts:968


limit

limit(limit): ModelQueryBuilder<T>

Sets the maximum number of results to return.

Parameters

NameTypeDescription
limitnumberMaximum number of results

Returns

ModelQueryBuilder<T>

The query builder for chaining

Example

.limit(10)

Defined in

model/Ad4mModel.ts:882


offset

offset(offset): ModelQueryBuilder<T>

Sets the number of results to skip.

Parameters

NameTypeDescription
offsetnumberNumber of results to skip

Returns

ModelQueryBuilder<T>

The query builder for chaining

Example

.offset(20) // Skip first 20 results

Defined in

model/Ad4mModel.ts:898


order

order(orderBy): ModelQueryBuilder<T>

Sets the order for the query results.

Parameters

NameTypeDescription
orderByOrderThe ordering criteria

Returns

ModelQueryBuilder<T>

The query builder for chaining

Example

.order({ createdAt: "DESC" })

Defined in

model/Ad4mModel.ts:866


overrideModelClassName

overrideModelClassName(className): ModelQueryBuilder<T>

Parameters

NameType
classNamestring

Returns

ModelQueryBuilder<T>

Defined in

model/Ad4mModel.ts:951


paginate

paginate(pageSize, pageNumber): Promise<PaginationResult<T>>

Gets a page of results with pagination metadata.

Parameters

NameTypeDescription
pageSizenumberNumber of items per page
pageNumbernumberWhich page to retrieve (1-based)

Returns

Promise<PaginationResult<T>>

Paginated results with metadata

Example

const page = await Recipe.query(perspective)
  .where({ category: "Main" })
  .paginate(10, 1);
console.log(`Page ${page.pageNumber}, ${page.results.length} of ${page.totalCount}`);

Defined in

model/Ad4mModel.ts:1070


paginateSubscribe

paginateSubscribe(pageSize, pageNumber, callback): Promise<PaginationResult<T>>

Subscribes to paginated results updates.

Parameters

NameTypeDescription
pageSizenumberNumber of items per page
pageNumbernumberWhich page to retrieve (1-based)
callback(results: PaginationResult<T>) => voidFunction to call with updated pagination results

Returns

Promise<PaginationResult<T>>

Initial pagination results

Example

await Recipe.query(perspective)
  .where({ category: "Main" })
  .paginateSubscribe(10, 1, page => {
    console.log("Updated page:", page.results);
  });

Defined in

model/Ad4mModel.ts:1095


properties

properties(properties): ModelQueryBuilder<T>

Specifies which properties to include in the results.

Parameters

NameTypeDescription
propertiesstring[]Array of property names to include

Returns

ModelQueryBuilder<T>

The query builder for chaining

Example

.properties(["name", "description", "rating"])

Defined in

model/Ad4mModel.ts:930


source

source(source): ModelQueryBuilder<T>

Sets the source filter for the query.

Parameters

NameTypeDescription
sourcestringThe source to filter by

Returns

ModelQueryBuilder<T>

The query builder for chaining

Example

.source("ad4m://self")

Defined in

model/Ad4mModel.ts:914


subscribe

subscribe(callback): Promise<T[]>

Subscribes to the query and receives updates when results change. Also returns initial results immediately.

Parameters

NameTypeDescription
callback(results: T[]) => voidFunction to call with updated results

Returns

Promise<T[]>

Initial results array

Example

await Recipe.query(perspective)
  .where({ status: "cooking" })
  .subscribe(recipes => {
    console.log("Currently cooking:", recipes);
  });

Defined in

model/Ad4mModel.ts:991


where

where(conditions): ModelQueryBuilder<T>

Adds where conditions to the query.

Parameters

NameTypeDescription
conditionsWhereThe conditions to filter by

Returns

ModelQueryBuilder<T>

The query builder for chaining

Example

.where({
  category: "Dessert",
  rating: { gt: 4 },
  tags: ["vegan", "quick"],
  published: true
})

Defined in

model/Ad4mModel.ts:850