Load, Query, and Tranform Data in Typescript / Javascript
npm install @chakra-dev/js-sdk
# or
yarn add @chakra-dev/js-sdk
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);
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);