hack-a-chain-software / indexer-kadena

0 stars 1 forks source link

[Homescreen/Search] Allow "search account" in the search button #77

Open 1Mateus opened 1 month ago

1Mateus commented 1 month ago

EN

PT

1Mateus commented 1 month ago

@davibauer consegue dar um help sobre como vai funcionar a nossa query de search?

vamos poder buscar pelas request key das transactions, block height e address?

eles vão retornar os objetos de cada item? tipo, o bloco, a transactions e um address??

Vamos poder fazer o filtro por essas 3 tabelas, certo?

Preciso conseguir reproduzir algo desse tipo:

Image

davibauer commented 1 month ago

@1Mateus Vamos ter que detalhar exatamente o alcance desta busca e então eu posso criar uma query customizada que tenha os inputs e outputs que necessitamos. Aqui pelo que vi precisa validar com a Kadena exatamente o que será filtrado e o que será mostrado, tem um check item na descrição com isso. Uma vez definido criarmos um método específico só para a busca.

1Mateus commented 4 weeks ago

@davibauer Eu fiz uma implementação basica de uma query de search para que eu conseguisse implementar o a parte de UI até que a gente tivsse essa query pronta:

const allQuery = gql`
  query SearchAll($searchTerm: String!, $limit: Int!, $heightFilter: Int) {
    blocks: allBlocks(
      last: $limit,
      filter: {
        or: [
          { hash: { includesInsensitive: $searchTerm } },
          { parent: { includesInsensitive: $searchTerm } },
          { payloadHash: { includesInsensitive: $searchTerm } },
          { transactionsHash: { includesInsensitive: $searchTerm } },
          { outputsHash: { includesInsensitive: $searchTerm } },
          { height: { equalTo: $heightFilter } }
        ]
      }
    ) {
      nodes {
        id
        hash
        parent
        chainId
        height
        creationTime
        payloadHash
        transactionsHash
        outputsHash
        weight
        epochStart
        chainwebVersion
      }
    }

    transactions: allTransactions(
      last: $limit,
      filter: {
        or: [
          { requestkey: { includesInsensitive: $searchTerm } },
          { hash: { includesInsensitive: $searchTerm } },
          { txid: { includesInsensitive: $searchTerm } },
          { pactid: { includesInsensitive: $searchTerm } },
          { sender: { includesInsensitive: $searchTerm } }
        ]
      }
    ) {
      nodes {
        id
        requestkey
        hash
        txid
        pactid
        sender
        chainId
        result
        gas
        gaslimit
        gasprice
      }
    }

    addresses: allBalances(
      first: $limit,
      filter: {
        account: { includesInsensitive: $searchTerm }
      },
      orderBy: [ACCOUNT_ASC]
    ) {
      nodes {
        account
        chainId
        balance
        module
        qualname
        tokenId
        hasTokenId
      }
    }

    tokens: allContracts(
      first: $limit,
      filter: {
        type: { equalTo: "fungible" },
        module: { includesInsensitive: $searchTerm }
      }
    ) {
      nodes {
        id
        network
        chainId
        module
        metadata
        tokenId
        precision
      }
    }
  }

https://github.com/user-attachments/assets/3a56db2f-4c96-47fc-adf3-ec7d45372b01

1Mateus commented 3 weeks ago

@davibauer consegue me dar um help com a query de filtros nova? eu to tentando testar mas fica carregando inifnitamente:

query SearchAll {
  searchAll(searchTerm: "k:", limit: 5) {
    blocks {
      chainId
      hash
      height
      parent
      transactionsCount
    }
    tokens {
      type
      module
      chainId
    }
    transactions {
      sender
      requestkey
      result
      metadata
      chainId
    }
    addresses {
      account
    }
  }
}

Image

1Mateus commented 2 weeks ago

https://github.com/hack-a-chain-software/indexer-kadena/commit/7fa235485e73057885f3c49e1908204cae6c94d0 https://github.com/hack-a-chain-software/indexer-kadena/commit/b76c36bd094fc542b2c8c19f7dd23cc85d45dbd7