Files
dragonchain-prime-node-sdk/examples/basic-usage.ts
Andrew Miller 98ab2e05a7
Some checks failed
Build and Test / build (16.x) (push) Failing after 12s
Build and Test / build (18.x) (push) Failing after 6s
Build and Test / build (20.x) (push) Failing after 6s
Initial Commit
2025-11-05 15:25:20 -05:00

186 lines
5.2 KiB
TypeScript

// noinspection JSUnusedLocalSymbols
/**
* Basic usage examples for Dragonchain Node.js SDK
*/
import { DragonchainSDK, loadConfig, getDefaultChain } from '@dragonchain-inc/prime-sdk';
// Example 1: Initialize SDK with direct credentials
// @ts-ignore
async function directInitialization() {
const sdk = new DragonchainSDK(
'your-public-id',
'your-auth-key-id',
'your-auth-key',
'https://your-dragonchain-endpoint.com'
);
// Check system health
await sdk.system.health();
console.log('System is healthy');
// Get system status
const status = await sdk.system.status();
console.log(`Chain ID: ${status.id}, Level: ${status.level}`);
}
// Example 2: Initialize SDK from config file
// @ts-ignore
async function configFileInitialization() {
// Load credentials from YAML file
const config = loadConfig('~/.dragonchain/credentials.yaml');
const chain = getDefaultChain(config);
if (!chain) {
throw new Error('No default chain found in config');
}
const sdk = new DragonchainSDK(chain.publicId, chain.authKeyId, chain.authKey, chain.endpoint);
return sdk;
}
// Example 3: Create a transaction
// @ts-ignore
async function createTransaction(sdk: DragonchainSDK) {
const response = await sdk.transaction.create({
txn_type: 'my-transaction-type',
payload: JSON.stringify({
message: 'Hello Dragonchain',
timestamp: new Date().toISOString(),
}),
tag: 'example-tag',
});
console.log(`Created transaction: ${response.transaction_id}`);
return response.transaction_id;
}
// Example 4: Create bulk transactions
// @ts-ignore
async function createBulkTransactions(sdk: DragonchainSDK) {
const response = await sdk.transaction.createBulk({
transactions: [
{
txn_type: 'type1',
payload: JSON.stringify({ data: 'transaction 1' }),
},
{
txn_type: 'type2',
payload: JSON.stringify({ data: 'transaction 2' }),
},
{
txn_type: 'type3',
payload: JSON.stringify({ data: 'transaction 3' }),
},
],
});
console.log(`Created ${response.transaction_ids.length} transactions`);
return response.transaction_ids;
}
// Example 5: Get a transaction
// @ts-ignore
async function getTransaction(sdk: DragonchainSDK, transactionId: string) {
const transaction = await sdk.transaction.get(transactionId);
console.log(`Transaction: ${transaction.header.txn_id}`);
console.log(`Type: ${transaction.header.txn_type}`);
console.log(`Block: ${transaction.header.block_id}`);
return transaction;
}
// Example 6: Create and manage transaction types
// @ts-ignore
async function manageTransactionTypes(sdk: DragonchainSDK) {
// Create a new transaction type
await sdk.transactionType.create({
txn_type: 'my-new-type',
});
console.log('Transaction type created');
// Get the transaction type
const txnType = await sdk.transactionType.get('my-new-type');
console.log(`Created at: ${txnType.created}`);
// List all transaction types
const types = await sdk.transactionType.list();
console.log(`Total transaction types: ${types.transactionTypes.length}`);
}
// Example 7: Query blocks
// @ts-ignore
async function queryBlocks(sdk: DragonchainSDK, blockId: string) {
const block = await sdk.block.get(blockId);
console.log(`Block ID: ${block.block_id}`);
console.log(`Timestamp: ${block.timestamp}`);
console.log(`Transactions: ${block.transactions.length}`);
return block;
}
// Example 8: Error handling
// @ts-ignore
async function errorHandlingExample(sdk: DragonchainSDK) {
try {
await sdk.transaction.get('non-existent-transaction-id');
} catch (error) {
if (error instanceof Error) {
console.error(`Error: ${error.message}`);
// Handle specific error cases
if (error.message.includes('404')) {
console.log('Transaction not found');
}
}
}
}
// Example 9: Complete workflow
// @ts-ignore
async function completeWorkflow() {
// Initialize SDK
const sdk = new DragonchainSDK(
process.env.DC_PUBLIC_ID || '',
process.env.DC_AUTH_KEY_ID || '',
process.env.DC_AUTH_KEY || '',
process.env.DC_ENDPOINT || ''
);
try {
// Check system health
await sdk.system.health();
console.log('✓ System healthy');
// Create a transaction type
await sdk.transactionType.create({
txn_type: 'workflow-example',
});
console.log('✓ Transaction type created');
// Create a transaction
const txnResponse = await sdk.transaction.create({
txn_type: 'workflow-example',
payload: JSON.stringify({
step: 'initialization',
timestamp: Date.now(),
}),
});
console.log(`✓ Transaction created: ${txnResponse.transaction_id}`);
// Wait a bit for the transaction to be processed
await new Promise((resolve) => setTimeout(resolve, 2000));
// Get the transaction
const transaction = await sdk.transaction.get(txnResponse.transaction_id);
console.log(`✓ Transaction verified in block: ${transaction.header.block_id}`);
console.log('\nWorkflow completed successfully!');
} catch (error) {
console.error('Workflow failed:', error);
throw error;
}
}
// Run examples (uncomment to execute)
// completeWorkflow().catch(console.error);