Composite queries
Prerequisites
This example requires an installation of:
- Install the IC SDK.
- Clone the example dapp project:
git clone https://github.com/dfinity/examples
Begin by opening a terminal window.
Step 1: Setup the project environment
We first need to build the data partition backend canister.
cd examples/rust/composite_query
dfx start --background
dfx canister create data_partition
dfx build data_partition
During the compilation of the fronted canister, the canister's wasm code will be inlined in the frontend canister's wasm code.
dfx canister create kv_frontend
dfx build kv_frontend
dfx canister install kv_frontend
Step 2: Using the canister
Now we add some key value pairs via the frontend canister.
dfx canister call kv_frontend put '(1:nat, 1337:nat)'
(null)
dfx canister call kv_frontend put '(1:nat, 42:nat)'
(opt (1_337 : nat))
Note that the first call to put
is slow, since the data partitions have to be created first.
dfx canister call kv_frontend get '(1:nat)'
(opt (42 : nat))
We can also query it via a (duplicate) method by doing update calls:
dfx canister call kv_frontend get_update '(1:nat)'
(opt (1_337 : nat))
It's also possible to do two query calls, first into the frontend and then into the data partition:
$ dfx canister call kv_frontend lookup '(1: nat)'
(1 : nat, "dmalx-m4aaa-aaaaa-qaanq-cai")
$ dfx canister call dmalx-m4aaa-aaaaa-qaanq-cai get '(1: nat)' --query
(1_337 : nat)