Data Warehouse
Typescript SDK
Data Warehouse
Typescript SDK
Load, Query, and Tranform Data in Typescript / Javascript
The Typescript SDK allows you to programmatically interact with your local, subscribed, and published databases directly in NodeJS or browser setting.
Latest documentation can be found directly on GitHub. Non-exhaustive samples below.
Installation
npm install @chakra-dev/js-sdk
# or
yarn add @chakra-dev/js-sdk
TypeScript
import { Chakra } from '@chakra-dev/js-sdk';
async function main() {
const client = new Chakra('ACCESSKEY:SECRET:USERNAME');
await client.login();
const originalStudents = [
{ id: 1, name: 'Alice', active: true },
{ id: 2, name: 'Bob', active: false },
];
// First push - creates table and inserts both records
await client.push('school.class.students', originalStudents, {
createIfMissing: true,
dedupeOnAppend: true,
primaryKeyColumns: ['id'],
});
await client.push('school.class.students', originalStudents, {
dedupeOnAppend: true, // no changes since records already exist
primaryKeyColumns: ['id'],
});
const updatedStudents = [
{ id: 1, name: 'Alice', active: false },
{ id: 2, name: 'Bob', active: false },
// new student
{ id: 3, name: 'Charles', active: false },
];
await client.push('school.class.students', updatedStudents, {
dedupeOnAppend: true, // only Charles will be updated since the other two will be deduped on id
primaryKeyColumns: ['id'],
});
await client.push('school.class.students', originalStudents, {
createIfMissing: true,
replaceIfExists: true, // replace the table with just the original students data. Charles no longer in table
});
const rows = await client.execute(
'SELECT * FROM school.class.students WHERE active = $1',
[true]
);
console.table(rows);
}
main().catch(console.error);
CommonJS
const { Chakra } = require('@chakra-dev/js-sdk');
async function main() {
const client = new Chakra('ACCESSKEY:SECRET:USERNAME');
await client.login();
const originalStudents = [
{ id: 1, name: 'Alice', active: true },
{ id: 2, name: 'Bob', active: false },
];
// First push - creates table and inserts both records
await client.push('school.class.students', originalStudents, {
createIfMissing: true,
dedupeOnAppend: true,
primaryKeyColumns: ['id'],
});
await client.push('school.class.students', originalStudents, {
dedupeOnAppend: true, // no changes since records already exist
primaryKeyColumns: ['id'],
});
const updatedStudents = [
{ id: 1, name: 'Alice', active: false },
{ id: 2, name: 'Bob', active: false },
// new student
{ id: 3, name: 'Charles', active: false },
];
await client.push('school.class.students', updatedStudents, {
dedupeOnAppend: true, // only Charles will be updated since the other two will be deduped on id
primaryKeyColumns: ['id'],
});
await client.push('school.class.students', originalStudents, {
createIfMissing: true,
replaceIfExists: true, // replace the table with just the original students data. Charles no longer in table
});
const rows = await client.execute(
'SELECT * FROM school.class.students WHERE active = $1',
[true]
);
console.table(rows);
}
main().catch(console.error);
On this page