沙丘客户端 TS
这个 国家防范机制一揽子计划 执行在 Dune API 文档它还引入了一种便利方法 refresh 结合 executeQuery, (中文(简体) ), getExecutionStatus 财务报告和审定财务报表 gettExecutionResults 来获取查询执行结果 几乎是微不足道的.
安装软件包
pnpm add @duneanalytics/client-sdk
import { QueryParameter, DuneClient, RunQueryArgs } from "@duneanalytics/client-sdk";
const { DUNE_API_KEY } = process.env;
const client = new DuneClient(DUNE_API_KEY ?? "");
const queryId = 1215383;
const opts: RunQueryArgs = {
queryId,
query_parameters: [
QueryParameter.text("TextField", "Plain Text"),
QueryParameter.number("NumberField", 3.1415926535),
QueryParameter.date("DateField", "2022-05-04 00:00:00"),
QueryParameter.enum("ListField", "Option 1"),
],
};
client
.runQuery(opts)
.then((executionResult) => console.log(executionResult.result?.rows));
// should look like
// [
// {
// date_field: "2022-05-04 00:00:00.000",
// list_field: "Option 1",
// number_field: "3.1415926535",
// text_field: "Plain Text",
// },
// ]
执行 Raw SQL
您可以直接使用 executeSql 方法 :
const { DUNE_API_KEY } = process.env;
const client = new DuneClient(DUNE_API_KEY ?? "");
const execution = await client.exec.executeSql({
sql: "SELECT * FROM dex.trades WHERE block_time > now() - interval '1' day LIMIT 10",
performance: QueryEngine.Medium, // optional
});
const executionId = execution.execution_id;
const status = await client.exec.getExecutionStatus(executionId);
const results = await client.exec.getExecutionResults(executionId);
自定义 API
const { DUNE_API_KEY } = process.env;
const client = new DuneClient(DUNE_API_KEY ?? "");
const results = await client.custom.getResults({
username: "your_username",
slug: "endpoint-slug"
// optional arguments: see `GetResultParams`
limit: 100,
});
用法 API
获取您的 API 使用情况, 包括信用和存储 :
const { DUNE_API_KEY } = process.env;
const client = new DuneClient(DUNE_API_KEY ?? "");
const usage = await client.usage.getUsage();
console.log(`Credits used: ${usage.billing_periods[0].credits_used}`);
console.log(`Private queries: ${usage.private_queries}`);
console.log(`Storage: ${usage.bytes_used} / ${usage.bytes_allowed} bytes`);
合同 API
提交分批解码合同并跟踪其状况。 提交文件的用户是创建 API 密钥的用户;请参见 文档 关于计划要求.
const { DUNE_API_KEY } = process.env;
const client = new DuneClient(DUNE_API_KEY ?? "");
const { results } = await client.contracts.decode({
submissions: [
{
blockchain_name: "ethereum",
address: "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984",
project_name: "uniswap",
contract_name: "UniswapToken",
abi: uniswapTokenAbi, // JSON array, or a string containing it
idempotency_key: "uniswap-token/ethereum/1", // optional, makes retries safe
},
],
});
// One result per submission, matched by index: { submission_id, status: "pending" } or { error }
const page = await client.contracts.listSubmissions({ status: "pending", limit: 20 });
// Pass page.next_cursor back as `cursor` to fetch the next page
也注意客户有方法 executeQuery, (中文(简体) ), getExecutionStatus, (中文(简体) ), getExecutionResult 财务报告和审定财务报表 cancelExecution
看这个 演示项目来啊!