0.8.0 • Published 1 year ago

client-sf-bulk2 v0.8.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

client-sf-bulk2

This is a sample client for the Salesforce Bulk API with some abstraction facilitating short implementations. It can be used in JS/TS scripts or in Node Project.

Table of Contents

General Information

This project aims to provide :

  • An easy to use client to query and import data via the Salesforce Bulk API ;
  • Some abstractions on top of the Salesforce Bulk API (ex: query in one line) ;

Technologies Used

  • Node JS - 17.1

Features

List the ready features here:

  • Easily query your Salesforce organization for data with the Salesforce Bulk API ;
  • Easily import data in your Salesforce organization with the Salesforce Bulk API ;

Usage

Check the Salesforce documentation here. Or use the one line implementation for query data :

import jsforce from 'jsforce';
import { BulkAPI, Parameters, QueryInput } from 'client-sf-bulk2';

async function submitBulkQueryJob() {

  const conn = new jsforce.Connection({});
  await conn.login(process.env.USERNAME!, process.env.PASSWORD!);

  const bulkParameters: Parameters = {
    accessToken: conn.accessToken,
    apiVersion: '55.0',
    instanceUrl: conn.instanceUrl
  };

  try {
    const bulkAPI = new BulkAPI(bulkParameters);
    const queryInput: QueryInput = {
      query: 'Select Id, Name from Account',
      operation: 'query'
    };

    const response = await bulkAPI.submitAndGetQueryResults(queryInput, 10);
    console.log(response);
  } catch (ex: any) {
    console.log(ex);
  }
}

submitBulkQueryJob();

For import data :

import jsforce from 'jsforce';
import { BulkAPI, Parameters, JobUploadRequest } from 'client-sf-bulk2';

async function importData() {
  const conn = new jsforce.Connection({});
  await conn.login(process.env.USERNAME!, process.env.PASSWORD!);
  const bulkParameters: Parameters = {
    accessToken: conn.accessToken,
    apiVersion: '55.0',
    instanceUrl: conn.instanceUrl
  };
  try {
    const bulkAPI = new BulkAPI(bulkParameters);
    const jobRequest: JobUploadRequest = {
      'object': 'Account',
      'operation': 'insert'
    };
    const response = await bulkAPI.createAndWaitJobResult(jobRequest, './account.csv');
    console.log(response);
  } catch (ex: any) {
    console.log(ex);
  }
}

importData();

You can import nd use the MonitorJob Event Emitter to monitor the current job :

import { SF_PassConnect, PassParameters } from 'client-sf-oauth';
import { BulkAPI, Parameters, JobUploadRequest, MonitorJob } from 'client-sf-bulk2';

async function importData() {

  const PassParameters: PassParameters = {
    clientId: process.env.clientId!,
    clientSecret: process.env.secret!,
    username: process.env.username!,
    password: process.env.password!,
    usertoken: process.env.usertoken!,
    host: process.env.host!
  };

  const connection = new SF_PassConnect(PassParameters);

  try {

    const result = await connection.requestAccessToken();

    const bulkParameters: Parameters = {
      accessToken: result.data.access_token,
      apiVersion: '55.0',
      instanceUrl: result.data.instance_url
    };

    const bulkAPI = new BulkAPI(bulkParameters);
    const jobRequest: JobUploadRequest = {
      'object': 'Account',
      'operation': 'insert'
    };
    const response = await bulkAPI.createAndStartJob(jobRequest, './accounts.csv');
    console.log(response);

    // Use the MonitorJob Event Emitter to get the status of the job
    MonitorJob.on('monitoring', (state: any) => {
      //Do something with the job state
      console.log(state);
    });

    const finalStateJob = await bulkAPI.waitJobEnd(response.id);

    if(finalStateJob === 'JobComplete') {
      const successfulRecords = await bulkAPI.getJobSuccesfulResults(response.id);
      const failedRecords = await bulkAPI.getJobFailedResults(response.id);
      console.log(successfulRecords);
      console.log(failedRecords);
    }
  } catch (ex: any) {
    console.log(ex);
  }
}

importData();

Project Status

Project is: in progress.

Acknowledgements

0.8.0

1 year ago

0.7.5

2 years ago

0.7.3

2 years ago

0.7.2

2 years ago

0.7.1

2 years ago

0.5.2

2 years ago

0.5.1

2 years ago

0.5.0

2 years ago

0.4.2

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago