UtxoQueryMacros

scalus.cardano.node.UtxoQueryMacros

Macro utilities for building UtxoQuery from lambda expressions at compile time.

This provides a HOAS (Higher-Order Abstract Syntax) embedding that translates lambda expressions to the UtxoQuery ADT.

Example:

import scalus.cardano.node.UtxoQueryMacros.buildQuery

val query = buildQuery { u =>
 u.output.address == myAddress && u.output.value.hasAsset(policyId, assetName)
}
// Compiles to: UtxoQuery(FromAddress(myAddress)) && HasAsset(policyId, assetName)

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Value members

Concrete methods

inline def buildQuery(inline f: Utxo => Boolean): UtxoQuery

Build UtxoQuery from lambda at compile time.

Build UtxoQuery from lambda at compile time.

Supported expressions:

  • u.output.address == addr - query by address
  • u.input.transactionId == txId - query by transaction
  • inputs.contains(u.input) - query by set of transaction inputs
  • u.output.value.hasAsset(policyId, assetName) - query/filter by asset
  • u.output.value.coin >= amount - filter by minimum lovelace
  • u.output.hasDatumHash(hash) - filter by datum hash
  • u.output.datumOption.exists(_.dataHash == hash) - filter by datum hash (alternative)
  • && - AND combination
  • || - OR combination

Value parameters

f

Lambda expression from Utxo to Boolean

Attributes

Returns

UtxoQuery representing the lambda