From 4b454cc884fe42ef6f48a785d27dde5eee785063 Mon Sep 17 00:00:00 2001 From: Satoshi Qazi Muhammed Date: Tue, 14 Jul 2026 07:59:24 -0700 Subject: [PATCH] Add missing query() to QueryableStorageEntry3 QueryableStorageEntry2 has always had a single-key-tuple query(k1, k2) alongside entries()/keys(), but QueryableStorageEntry3 only ever grew entries()/keys() - nothing in the codebase needed a direct 3-key point query until BridgeMultisigRuntimeApi's Assets.Approvals lookup. Added query(k1, k2, k3), mirroring QueryableStorageEntry2's implementation exactly. --- .../source/query/api/QueryableStorageEntry3.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/runtime/src/main/java/io/novafoundation/nova/runtime/storage/source/query/api/QueryableStorageEntry3.kt b/runtime/src/main/java/io/novafoundation/nova/runtime/storage/source/query/api/QueryableStorageEntry3.kt index ec1d0264..4c156210 100644 --- a/runtime/src/main/java/io/novafoundation/nova/runtime/storage/source/query/api/QueryableStorageEntry3.kt +++ b/runtime/src/main/java/io/novafoundation/nova/runtime/storage/source/query/api/QueryableStorageEntry3.kt @@ -12,6 +12,9 @@ typealias QueryableStorageBinder3 = (dynamicInstance: Any, key1: interface QueryableStorageEntry3 { + context(StorageQueryContext) + suspend fun query(argument1: I1, argument2: I2, argument3: I3): T? + context(StorageQueryContext) suspend fun entries(keys: List>): Map, T> @@ -32,6 +35,16 @@ internal class RealQueryableStorageEntry3( private val key3FromInternalConverter: QueryableStorageKeyFromInternalBinder? = null, ) : QueryableStorageEntry3 { + context(StorageQueryContext) + override suspend fun query(argument1: I1, argument2: I2, argument3: I3): T? { + return storageEntry.query( + convertKey1ToInternal(argument1), + convertKey2ToInternal(argument2), + convertKey3ToInternal(argument3), + binding = { decoded -> decoded?.let { binding(it, argument1, argument2, argument3) } } + ) + } + context(StorageQueryContext) override suspend fun entries(keys: List>): Map, T> { return storageEntry.entries(