Requirements

  • Node 12 or newer.

Install

npm install @peaka/client or yarn add @peaka/client

Usage

Create a Peaka connection

import { Peaka, connectToPeaka } from "@peaka/client";

const connection: Peaka = connectToPeaka("<YOUR_API_KEY>")

Submit a query

import type { QueryResult } from "@peaka/client";

try{
  const iter: Iterator<QueryResult> = await connection.query(
    'select * from <CATALOG_NAME>.<SCHEMA_NAME>.<TABLE_NAME> limit 100'
  );
}catch(err){
  console.error(err.response.data);
})

Iterate through the query results

for await (const queryResult of iter) {
  console.log(queryResult.data);
}

Alternative: map and aggregate the data

import type { QueryData } from "@peaka/client";

const data: QueryData[] = await iter
  .map(r => r.data ?? [])
  .fold<QueryData[]>([], (row, acc) => [...acc, ...row]);

Handle the Errors

Query errors are returned in two different ways.

  • The connection.query() method throws an error object, and the error.response.data object contains the following properties:
Error PropertyDescription
errorCodeCode of error
messageDescription of the error
traceIdThe identifier that you can give Peaka Team to learn more about the error
  • The connection.query() method returns successfully, but the response may include an error object with the following structure:
type QueryError = {
    message: string;
    errorCode: number;
    errorName: string;
    errorType: string;
    failureInfo: QueryFailureInfo;
};

In order to handle all possible errors, please make sure to check both objects, as demonstrated in the example below:

try{
  const iter = await connection.query(
    'SELECT * FROM "peaka"."table"."lookup table"'
  );
  
  for await (const queryResult of iter) {
    if(queryResult.error){
      console.log("error", queryResult.error);
    }
  }
}catch(e){
  console.log("e", e.response.data);
}

Requirements

  • Node 12 or newer.

Install

npm install @peaka/client or yarn add @peaka/client

Usage

Create a Peaka connection

import { Peaka, connectToPeaka } from "@peaka/client";

const connection: Peaka = connectToPeaka("<YOUR_API_KEY>")

Submit a query

import type { QueryResult } from "@peaka/client";

try{
  const iter: Iterator<QueryResult> = await connection.query(
    'select * from <CATALOG_NAME>.<SCHEMA_NAME>.<TABLE_NAME> limit 100'
  );
}catch(err){
  console.error(err.response.data);
})

Iterate through the query results

for await (const queryResult of iter) {
  console.log(queryResult.data);
}

Alternative: map and aggregate the data

import type { QueryData } from "@peaka/client";

const data: QueryData[] = await iter
  .map(r => r.data ?? [])
  .fold<QueryData[]>([], (row, acc) => [...acc, ...row]);

Handle the Errors

Query errors are returned in two different ways.

  • The connection.query() method throws an error object, and the error.response.data object contains the following properties:
Error PropertyDescription
errorCodeCode of error
messageDescription of the error
traceIdThe identifier that you can give Peaka Team to learn more about the error
  • The connection.query() method returns successfully, but the response may include an error object with the following structure:
type QueryError = {
    message: string;
    errorCode: number;
    errorName: string;
    errorType: string;
    failureInfo: QueryFailureInfo;
};

In order to handle all possible errors, please make sure to check both objects, as demonstrated in the example below:

try{
  const iter = await connection.query(
    'SELECT * FROM "peaka"."table"."lookup table"'
  );
  
  for await (const queryResult of iter) {
    if(queryResult.error){
      console.log("error", queryResult.error);
    }
  }
}catch(e){
  console.log("e", e.response.data);
}