Rahul Singh
Rahul Singh

Reputation: 107

Transaction function return type in Hyperledger Composer

I am using the @return(MyConcept) in transaction function defination i.e in cto file.

Based on certain conditions in the transaction fuunction, I want the return type to be dynamic i.e sometimes it may return MyConcept1 and sometimes MyConcept2 or sometimes even null.

How can I achieve this?

Upvotes: 0

Views: 187

Answers (1)

Paul O'Mahony
Paul O'Mahony

Reputation: 6740

use a 'master' Concept to hold the other optional Concepts

example:

participant Publisher identified by id {
  o String id
}

asset myAsset identified by id {
  o String id
  o String value
}
concept MyConcept1 {
    o String value
}

concept MyConcept2 {
    o String value optional
}

concept MyConcept {
    o MyConcept1 myc1 optional
    o MyConcept2 myc2 optional
}

@returns(MyConcept)
transaction myTransaction {
  --> myAsset
  etc
}

my Transaction could return anything in that Concept you set

eg.

/**
 * Handle a transaction that returns a concept.
 * @param {org.sample.MyTransaction} transaction The transaction.
 * @returns {org.sample.MyConcept} The concept.
 * @transaction
 */
async function myTransaction(transaction) {
    // other stuff
    const factory = getFactory();
    // assign values
    var conceptData1 = factory.newConcept('org.sample', 'MyConcept1');

    conceptData1.value = transaction.myAsset.value; // etc
    //

    // return master (you define myConceptdata) based on what was set .. some of which could be blank
    return myConceptdata;
}

Upvotes: 1

Related Questions