Skip to content

v1.3.0

Choose a tag to compare

@javiertoledo javiertoledo released this 22 Nov 18:27
· 657 commits to main since this release

Support GraphQL Promises in Read Model getters. With this change, a Read Model can now define a getter that returns a promise to perform nested queries or additional requests when the property is requested via GraphQL.

Examples:

Return a calculated value:

export class CartReadModel {
  public get cartItemsSize(): number | undefined {
    return this.cartItems ? this.cartItems.length : 0
  }
}

Perform a nested search to return another ReadModel value nested in the response:

export class CartReadModel {
  public get lastProduct(): Promise<ProductReadModel | undefined> {
    if (this.cartItemsSize === 0) {
      return Promise.resolve(undefined)
    }
    return Booster.readModel(ProductReadModel)
            .filter({
              id: { eq: this.cartItems.at(-1)?.productId },
            })
            .searchOne()
  }
}