142 lines
3.5 KiB
Markdown
142 lines
3.5 KiB
Markdown
# Records Demo
|
|
|
|
* Run the laconicd chain:
|
|
|
|
```bash
|
|
# In laconcid
|
|
make install
|
|
./scripts/init.sh clean
|
|
```
|
|
|
|
* Create and populate `config.yml` following [config.example.yml](./config.example.yml):
|
|
|
|
```bash
|
|
# Get user key
|
|
laconicd keys export alice --unarmored-hex --unsafe --keyring-backend test --home ~/.laconicd
|
|
|
|
# Create a bond
|
|
laconicd tx bond create 100000000000photon --fees 100photon --from alice
|
|
|
|
# Get the bond id
|
|
laconicd query bond list
|
|
```
|
|
|
|
* Install the CLI:
|
|
|
|
```bash
|
|
yarn && yarn build
|
|
yarn global add file:$PWD
|
|
```
|
|
|
|
* Publish watcher records from [`records/watcher`](./records/watcher):
|
|
|
|
```bash
|
|
# Publishes records and corresponding 'deployment' records from the given directory
|
|
yarn ts-node src/publish-endponit-records.ts -c config.yml -r records/watcher
|
|
```
|
|
|
|
## Example
|
|
|
|
* Query for `ajna-watcher` deployment:
|
|
|
|
* Find the `WatcherRecord` for `ajna-watcher`:
|
|
|
|
```bash
|
|
WATCHER_RECORD_ID=$(laconic registry record list --all --type WatcherRecord --name ajna-watcher | jq -r '.[].id')
|
|
```
|
|
|
|
* Find corresponding deployment(s):
|
|
|
|
```bash
|
|
laconic registry record list --all --type WatcherDeploymentRecord watcher $WATCHER_RECORD_ID
|
|
|
|
# Get the deployment URL(s)
|
|
laconic registry record list --all --type WatcherDeploymentRecord watcher $WATCHER_RECORD_ID | jq -r '.[].attributes.url'
|
|
```
|
|
|
|
## Query GQL
|
|
|
|
* View the records at laconicd GQL endpoint <http://localhost:9473>:
|
|
|
|
```gql
|
|
{
|
|
queryRecords {
|
|
id
|
|
bondId
|
|
names
|
|
attributes {
|
|
key
|
|
value {
|
|
... on BooleanValue { bool: value }
|
|
... on IntValue { int: value }
|
|
... on FloatValue { float: value }
|
|
... on StringValue { string: value }
|
|
... on BytesValue { bytes: value }
|
|
... on LinkValue { link: value }
|
|
... on ArrayValue {
|
|
array: value {
|
|
... on BooleanValue { bool: value }
|
|
... on IntValue { int: value }
|
|
... on FloatValue { float: value }
|
|
... on StringValue { string: value }
|
|
... on BytesValue { bytes: value }
|
|
... on LinkValue { link: value }
|
|
}
|
|
}
|
|
... on MapValue { map: value { key mapping: value { __typename } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
* Query with filters, for example: query all `filecoin` `WatcherRecord`s:
|
|
|
|
```gql
|
|
{
|
|
queryRecords (
|
|
attributes: [
|
|
{
|
|
key: "type",
|
|
value: {
|
|
string: "WatcherRecord"
|
|
}
|
|
},
|
|
{
|
|
key: "chain",
|
|
value: {
|
|
string: "filecoin"
|
|
}
|
|
}
|
|
],
|
|
all: true
|
|
) {
|
|
id
|
|
bondId
|
|
names
|
|
attributes {
|
|
key
|
|
value {
|
|
... on BooleanValue { bool: value }
|
|
... on IntValue { int: value }
|
|
... on FloatValue { float: value }
|
|
... on StringValue { string: value }
|
|
... on BytesValue { bytes: value }
|
|
... on LinkValue { link: value }
|
|
... on ArrayValue {
|
|
array: value {
|
|
... on BooleanValue { bool: value }
|
|
... on IntValue { int: value }
|
|
... on FloatValue { float: value }
|
|
... on StringValue { string: value }
|
|
... on BytesValue { bytes: value }
|
|
... on LinkValue { link: value }
|
|
}
|
|
}
|
|
... on MapValue { map: value { key mapping: value { __typename } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|