Skip to content

Commit

Permalink
Testing filtering queries
Browse files Browse the repository at this point in the history
  • Loading branch information
parisyup committed May 13, 2024
1 parent bd416c8 commit 241310b
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.r3.developers.customStateJSONandQuery.states

import net.corda.v5.ledger.utxo.StateAndRef
import net.corda.v5.ledger.utxo.query.VaultNamedQueryCollector
import net.corda.v5.ledger.utxo.query.VaultNamedQueryFactory
import net.corda.v5.ledger.utxo.query.VaultNamedQueryStateAndRefFilter
import net.corda.v5.ledger.utxo.query.VaultNamedQueryStateAndRefTransformer
import net.corda.v5.ledger.utxo.query.registration.VaultNamedQueryBuilderFactory

class ChatCustomQueryFactory : VaultNamedQueryFactory {
Expand All @@ -16,5 +20,49 @@ class ChatCustomQueryFactory : VaultNamedQueryFactory {
"WHERE visible_states.custom_representation -> 'com.r3.developers.customStateJSONandQuery.states.ChatState' ->> 'messageContentFrom' = :nameOfSender"
)
.register()
vaultNamedQueryBuilderFactory.create("GET_MSG_FROM_ALICE")
.whereJson(
"WHERE visible_states.custom_representation ? 'com.r3.developers.cordapptemplate.utxoexample.states.ChatState' "
)
.filter(CustomQueryFilter())
.register()

vaultNamedQueryBuilderFactory.create("GET_ALL_MSGS_FROM")
.whereJson(
"WHERE visible_states.custom_representation ? 'com.r3.developers.cordapptemplate.utxoexample.states.ChatState' "
)
.map(CustomQueryTransformer())
.register()

vaultNamedQueryBuilderFactory.create("GET_MSG_AMOUNT")
.whereJson(
"WHERE visible_states.custom_representation -> 'com.r3.developers.cordapptemplate.utxoexample.states.ChatState' ->> 'messageContentFrom' = :nameOfSender"
)
.collect(CustomQueryCollector())
.register()
}
}

class CustomQueryFilter : VaultNamedQueryStateAndRefFilter<ChatState> {
override fun filter(data: StateAndRef<ChatState>, parameters: MutableMap<String, Any>): Boolean {
return true
}
}

class CustomQueryTransformer : VaultNamedQueryStateAndRefTransformer<ChatState, String> {
override fun transform(data: StateAndRef<ChatState>, parameters: MutableMap<String, Any>): String {
return data.state.contractState.messageFrom.toString()
}
}

class CustomQueryCollector : VaultNamedQueryCollector<String, Int> {
override fun collect(
resultSet: MutableList<String>,
parameters: MutableMap<String, Any>
): VaultNamedQueryCollector.Result<Int> {
return VaultNamedQueryCollector.Result(
listOf(resultSet.size),
true
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,7 @@ class ListChatsByCustomQueryFlow : ClientStartableFlow {
log.info("ListChatsByCustomQueryFlow.call() called")

//this is our custom query
val resultSet = ledgerService.query("GET_MSG_FROM", StateAndRef::class.java)
.setParameter("nameOfSender", "CN=Alice, OU=Test Dept, O=R3, L=London, C=GB")
val resultSet = ledgerService.query("GET_MSG_FROM_ALICE", StateAndRef::class.java)
.setCreatedTimestampLimit(Instant.now()).setLimit(1000)
.execute()

Expand Down

0 comments on commit 241310b

Please sign in to comment.