laconicd/gql
Prathamesh Musale 7a88c82816 Add queries to get participant by laconic or nitro address (#44)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Co-authored-by: IshaVenikar <ishavenikar7@gmail.com>
Reviewed-on: cerc-io/laconicd#44
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-29 10:28:30 +00:00
..
cerc-io/laconicd Add queries to get participant by laconic or nitro address (#44) 2024-07-29 10:28:30 +00:00
flags.go Setup and integrate GQL server (#12) 2024-02-29 12:45:38 +00:00
generated.go Add queries to get participant by laconic or nitro address (#44) 2024-07-29 10:28:30 +00:00
gqlgen.yml Rename laconic2d to laconicd (#26) 2024-04-01 09:57:26 +00:00
graphiql.go Setup and integrate GQL server (#12) 2024-02-29 12:45:38 +00:00
models_gen.go Add fields for role and KYC ID for onboarded participants (#43) 2024-07-26 14:42:40 +00:00
README.md Rename ethereum_address to nitro_address in onboarding module (#8) 2024-07-16 09:25:39 +05:30
resolver.go Add queries to get participant by laconic or nitro address (#44) 2024-07-29 10:28:30 +00:00
scalar.go Setup and integrate GQL server (#12) 2024-02-29 12:45:38 +00:00
server.go Add lint config and fix lint errors (#7) 2024-07-16 09:25:39 +05:30
status.go Add lint config and fix lint errors (#7) 2024-07-16 09:25:39 +05:30
util.go Rename laconic2d to laconicd (#26) 2024-04-01 09:57:26 +00:00
version.go Setup and integrate GQL server (#12) 2024-02-29 12:45:38 +00:00

cerc-io laconic gql

Browser : http://localhost:9473 for gql

Run gqlgen

On having some change in the GQL schema (for example: adding a new query) update the schema.graphql file as required and run the following:

  • Generate GQL bindings:

    # Install gqlgen if not present
    go get github.com/99designs/gqlgen@v0.17.22
    
    # Generate bindings
    # In gql
    go run github.com/99designs/gqlgen generate
    
  • Implement the required resolver method(s)

  • Regenerate GQL bindings:

    # Generate bindings
    go run github.com/99designs/gqlgen generate
    

Start server

laconicd start --gql-playground --gql-server

Basic node status:

{
  getStatus {
    version
    node {
      id
      network
      moniker
    }
    sync {
      latestBlockHeight
      catchingUp
    }
    numPeers
    peers {
      isOutbound
      remoteIp
    }
    diskUsage
  }
}

Full node status:

{
  getStatus {
    version
    node {
      id
      network
      moniker
    }
    sync {
      latestBlockHash
      latestBlockTime
      latestBlockHeight
      catchingUp
    }
    validator {
      address
      votingPower
      proposerPriority
    }
    validators {
      address
      votingPower
      proposerPriority
    }
    numPeers
    peers {
      node {
        id
        network
        moniker
      }
      isOutbound
      remoteIp
    }
    diskUsage
  }
}

Get records by IDs.

{
  getRecordsByIds(ids: ["bafyreigswvbm4dbpnbwkyegrcxd6kynqe4bivflo6esedgxnuofpzonwdy"]) {
    id
    names
    bondId
    createTime
    expiryTime
    owners
    attributes {
      key
      value {
        string
      }
    }
  }
}

Query records.

{
  queryRecords(attributes: [{ key: "type", value: { string: "crn:bot" } }]) {
    id
    names
    bondId
    createTime
    expiryTime
    owners
    attributes {
      key
      value {
        string
      }
    }
  }
}

Get account details:

{
  getAccounts(addresses: ["laconic17t5ywvqxntu0afc96tz0yxcx92ss0e2alhx2c2"]) {
    address
    pubKey
    number
    sequence
    balance {
      type
      quantity
    }
  }
}

Query bonds:

{
  queryBonds(
    attributes: [
      {
        key: "owner"
        value: { string: "laconic17t5ywvqxntu0afc96tz0yxcx92ss0e2alhx2c2" }
      }
    ]
  ) {
    id
    owner
    balance {
      type
      quantity
    }
  }
}

Get bonds by IDs.

{
  getBondsByIds(
    ids: [
      "1c2b677cb2a27c88cc6bf8acf675c94b69051125b40c4fd073153b10f046dd87"
      "c3f7a78c5042d2003880962ba31ff3b01fcf5942960e0bc3ca331f816346a440"
    ]
  ) {
    id
    owner
    balance {
      type
      quantity
    }
  }
}

Query Bonds by Owner

{
  queryBondsByOwner(
    ownerAddresses: ["laconic17t5ywvqxntu0afc96tz0yxcx92ss0e2alhx2c2"]
  ) {
    owner
    bonds {
      id
      owner
      balance {
        type
        quantity
      }
    }
  }
}

Query auctions by ids

{
  getAuctionsByIds(
    ids: ["be98f2073c246194276554eefdb4c95b682a35a0f06fbe619a6da57c10c93e90"]
  ) {
    id
    ownerAddress
    createTime
    minimumBid {
      type
      quantity
    }
    commitFee {
      type
      quantity
    }
    commitsEndTime
    revealFee {
      type
      quantity
    }
    revealsEndTime
    winnerBid {
      type
      quantity
    }
    winnerPrice {
      type
      quantity
    }
    winnerAddress
    bids {
      bidderAddress
      commitHash
      commitTime
      commitFee {
        type
        quantity
      }
      revealFee {
        type
        quantity
      }
      revealTime
      bidAmount {
        type
        quantity
      }
      status
    }
  }
}

LookUp Authorities

{
  lookupAuthorities(names: []) {
    ownerAddress
    ownerAddress
    height
    bondId
    status
    expiryTime
    auction {
      id
      ownerAddress
      createTime
      minimumBid {
        type
        quantity
      }
      commitFee {
        type
        quantity
      }
      commitsEndTime
      revealFee {
        type
        quantity
      }
      revealsEndTime
      winnerBid {
        type
        quantity
      }
      winnerPrice {
        type
        quantity
      }
      winnerAddress
      bids {
        bidderAddress
        commitHash
        commitTime
        commitFee {
          type
          quantity
        }
        revealFee {
          type
          quantity
        }
        revealTime
        bidAmount {
          type
          quantity
        }
        status
      }
    }
  }
}

LookUp Names

{
  lookupNames(names: ["crn://hello/test"]) {
    latest {
      id
      height
    }
    history {
      id
      height
    }
  }
}

Resolve Names

{
  resolveNames(names: ["asd"]) {
    id
    names
    bondId
    createTime
    expiryTime
    owners
    attributes {
      key
      value {
        string
      }
    }
  }
}

Query participants:

{
  getParticipants {
    cosmosAddress
    nitroAddress
  }
}