PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@aptos-labs/ts-sdk/src/api

Просмотр файла: table.ts

import { getTableItem, getTableItemsData, getTableItemsMetadata } from "../internal/table";
import {
  TableItemRequest,
  LedgerVersionArg,
  AnyNumber,
  PaginationArgs,
  WhereArg,
  OrderByArg,
  GetTableItemsDataResponse,
  GetTableItemsMetadataResponse,
} from "../types";
import { TableItemsBoolExp, TableMetadatasBoolExp } from "../types/generated/types";
import { ProcessorType } from "../utils";
import { AptosConfig } from "./aptosConfig";
import { waitForIndexerOnVersion } from "./utils";

/**
 * A class to query all `Table` Aptos related queries.
 */
export class Table {
  readonly config: AptosConfig;

  /**
   * Initializes a new instance of the Aptos client with the specified configuration.
   * This allows you to interact with the Aptos blockchain using the provided settings.
   *
   * @param config - The configuration settings for the Aptos client.
   *
   * @example
   * ```typescript
   * import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
   *
   * async function runExample() {
   *     // Create a new Aptos client with testnet configuration
   *     const config = new AptosConfig({ network: Network.TESTNET });
   *     const aptos = new Aptos(config);
   *
   *     console.log("Aptos client initialized:", aptos);
   * }
   * runExample().catch(console.error);
   * ```
   */
  constructor(config: AptosConfig) {
    this.config = config;
  }

  /**
   * Queries for a specific item in a table identified by the handle and the key for the item.
   * This function allows you to retrieve structured data from a table in the Aptos blockchain.
   *
   * @param args.handle A pointer to where that table is stored.
   * @param args.data Object that describes the table item, including key and value types.
   * @param args.data.key_type The Move type of the table key.
   * @param args.data.value_type The Move type of the table value.
   * @param args.data.key The value of the table key.
   * @param args.options.ledgerVersion The ledger version to query; if not provided, it will get the latest version.
   *
   * @returns Table item value rendered in JSON.
   *
   * @example
   * ```typescript
   * import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
   *
   * const config = new AptosConfig({ network: Network.TESTNET });
   * const aptos = new Aptos(config);
   *
   * async function runExample() {
   *   // Retrieve a table item from the Aptos blockchain
   *   const tableItem = await aptos.getTableItem({
   *     handle: "0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca",
   *     data: {
   *       key_type: "address", // Move type of table key
   *       value_type: "u128", // Move type of table value
   *       key: "0x619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935" // Value of table key
   *     },
   *   });
   *
   *   console.log(tableItem);
   * }
   * runExample().catch(console.error);
   * ```
   */
  async getTableItem<T>(args: { handle: string; data: TableItemRequest; options?: LedgerVersionArg }): Promise<T> {
    return getTableItem<T>({ aptosConfig: this.config, ...args });
  }

  /**
   * Queries for table items data with optional filtering and pagination.
   * This function allows you to retrieve specific data from a table based on provided criteria.
   *
   * @param args - The arguments for querying table items data.
   * @param args.minimumLedgerVersion - Optional minimum ledger version to wait for before querying.
   * @param args.options - Optional parameters for pagination and filtering.
   * @param args.options.where - Conditions to filter the response.
   * @param args.options.offset - The number of items to skip before starting to collect the result set.
   * @param args.options.limit - The maximum number of items to return.
   * @param args.options.orderBy - The criteria to order the results.
   *
   * Note: This query calls the indexer server.
   *
   * @example
   * ```typescript
   * import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
   *
   * const config = new AptosConfig({ network: Network.TESTNET });
   * const aptos = new Aptos(config);
   *
   * async function runExample() {
   *   // Retrieve table items data with specific filtering options
   *   const data = await aptos.getTableItemsData({
   *     minimumLedgerVersion: 1, // specify your own minimum ledger version if needed
   *     options: {
   *       where: {
   *         table_handle: { _eq: "0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca" },
   *         transaction_version: { _eq: "0" }
   *       },
   *       limit: 10, // specify your own limit if needed
   *     },
   *   });
   *
   *   console.log(data);
   * }
   * runExample().catch(console.error);
   * ```
   *
   * @returns GetTableItemsDataResponse
   */
  async getTableItemsData(args: {
    minimumLedgerVersion?: AnyNumber;
    options?: PaginationArgs & WhereArg<TableItemsBoolExp> & OrderByArg<GetTableItemsDataResponse[0]>;
  }): Promise<GetTableItemsDataResponse> {
    await waitForIndexerOnVersion({
      config: this.config,
      minimumLedgerVersion: args.minimumLedgerVersion,
      processorType: ProcessorType.DEFAULT,
    });
    return getTableItemsData({ aptosConfig: this.config, ...args });
  }

  /**
   * Queries for the metadata of table items, allowing for filtering and pagination.
   *
   * @param args - The parameters for the query.
   * @param args.minimumLedgerVersion - Optional minimum ledger version to wait for before querying.
   * @param args.options - Optional parameters for pagination and filtering.
   * @param args.options.where - Conditions to filter the response.
   * @param args.options.offset - The offset for pagination.
   * @param args.options.limit - The maximum number of items to return.
   * @param args.options.orderBy - The order in which to return the items.
   *
   * Note that this query calls the indexer server.
   *
   * @example
   * ```typescript
   * import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
   *
   * const config = new AptosConfig({ network: Network.TESTNET });
   * const aptos = new Aptos(config);
   *
   * async function runExample() {
   *   // Fetching table items metadata with a filter condition
   *   const data = await aptos.getTableItemsMetadata({
   *     minimumLedgerVersion: 1, // specify your own minimum ledger version if needed
   *     options: {
   *       where: { handle: { _eq: "0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca" } },
   *       limit: 10, // specify your own limit if needed
   *     },
   *   });
   *
   *   console.log(data);
   * }
   * runExample().catch(console.error);
   * ```
   *
   * @returns GetTableItemsMetadataResponse
   */
  async getTableItemsMetadata(args: {
    minimumLedgerVersion?: AnyNumber;
    options?: PaginationArgs & WhereArg<TableMetadatasBoolExp> & OrderByArg<GetTableItemsMetadataResponse[0]>;
  }): Promise<GetTableItemsMetadataResponse> {
    await waitForIndexerOnVersion({
      config: this.config,
      minimumLedgerVersion: args.minimumLedgerVersion,
      processorType: ProcessorType.DEFAULT,
    });
    return getTableItemsMetadata({ aptosConfig: this.config, ...args });
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!