Skip to main content

query

Usage: chr query [OPTIONS] QUERYNAME [ARGS]...

Make a query towards a running node

Note: For query arguments:

If you have an argument name beginning with a underscore '_', it is then
required to use '--' to signify the end of options and the start of
arguments. All commands after the '--' will then be parsed as arguments.


Examples:
╭─────────────────────────────────────────────────────────────────────╮
# query primitive_args(arg1: integer, arg2: name, arg3: text, arg4: │
│byte_array, arg5: my_enum)
│chr query primitive_args 'arg1=123' 'arg2=Alice' 'arg3="My Neighbor"'
'arg4=x"AB12"' 'arg5=0'
# query dict_arg(arg: map<text, integer>) │
│chr query dict_arg 'arg=["key": 12]'
# query map_arg(arg: map<my_enum, text>) │
│chr query map_arg 'arg=[[0, "first"],[1, "second"]]'
# query struct_arg(arg: my_struct) │
│chr query struct_arg 'arg=[12, "structs are arrays", x"AB"]'
│ │
# Use -- do avoid additional quotes │
│chr query my_query -- arg1=foo arg2=x"AB12"
╰─────────────────────────────────────────────────────────────────────╯

╭─ Configuration Properties ──────────────────────────────────────────────────╮
│ -cfg, --config=CONFIG Alternate path for client configuration file
│ -s, --settings=SETTINGS Alternate path for project settings file
╰─────────────────────────────────────────────────────────────────────────────╯
╭─ Node ──────────────────────────────────────────────────────────────────────╮
│ │
│ Target a test node
│ │
│ -brid, --blockchain-rid=TEXT Target Blockchain RID │
--cid=INT Target Blockchain IID │
│ --api-url=TEXT Target api url (default: │
│ http://localhost:7740)
╰─────────────────────────────────────────────────────────────────────────────╯
╭─ Deployment ────────────────────────────────────────────────────────────────╮
│ │
│ Use a configured deployment │
│ │
│ -d, --network=TEXT Specify which deployment target to use │
│* -bc, --blockchain=TEXT Name of blockchain in deployment configuration │
╰─────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────╮
│ -f, --output-format=(pretty|raw|JSON|XML) Output format (default: pretty)
│ -h, --help Show this message and exit
╰─────────────────────────────────────────────────────────────────────────────╯
╭─ Arguments ─────────────────────────────────────────────────────────────────╮
│ QUERYNAME name of the query to make. │
│ ARGS arguments to pass to the query, passed either as key=value pairs│
│ or as a single dict. (integer: 123) (big_integer: 1234L)
(string: foo, "bar") (bytearray: will be encoded using the rell │
│ notation x"<myByteArray>" and will initially be interpreted as a│
│ hex-string.) (array: [foo,123]) (dict: │
["key1":value1,"key2":value2])
╰─────────────────────────────────────────────────────────────────────────────╯

You can use the query command (chr query) to test and interact with a chain that's either local or deployed without using a client. You can set a path for the project config file (chromia.yml) or specify a different file using --settings. In addition to that, you can change between a local and deployed chain target with the --deployment and --local flags. The flag is --local by default.

Node

When you start a node, you can see the Blockchain RID as the standard output. An example would look like this: Blockchain RID: FC17B67D66F6F35A5D8B75ED3F83AE222FB8C8FCA241624F06285150F10C6BAC. If you run the node on a different URL than the default http://localhost:7740, you can use the --api-url in the chromia.yml to specify it.

  • To run the query hello_world specified in the main.rell file.
chr query --blockchain-rid <BlockchainRID> hello_world
  • If the query has arguments called foo, bar and baz, then the query would look like the following for the values 17, "hello" and "hello world" (quoting of strings is optional if they don't contain whitespace or special characters).
chr query --blockchain-rid <BlockchainRID> hello_world foo=17 bar=hello 'baz="hello world"'

Deployed

Towards a deployed chain, you can use the same commands as in a local environment, but you need to add a --network (deployment target) and --blockchain (name of the chain to query) instead of the --blockchain-rid.

chr query --network testnet --blockchain my_rell_dapp hello_world