0.2.8 • Published 9 years ago

pool-party v0.2.8

Weekly downloads
1
License
ISC
Repository
github
Last release
9 years ago

Pool Party

NPM version Downloads

Installation

$ npm install --save pool-party

Features

  • Connection pooling
  • Queued requests
  • ES5/6 support (written in ES6, transpiled with Babel)
  • Connection timeout
  • Custom connection validation method
  • Decorate existing connection instance with poolable requests
  • High-water mark to drain connections under low load

Dive In!

var PoolParty = require('pool-party');

var db = new PoolParty({
  // Options
});

Options

factory

type function (Required)

Function to create new connections. Must return a connection wrapped in a {Promise}

destroy

type function (Required)

Function to terminate connections Must return a true/false wrapped in a {Promise}

min

type number

default 0

Minimum number of connections to keep open

max

type number

default 8

Maximum number of connection to have open

timeout

type milliseconds

default 1000 * 60 * 60

Maximum life of a connection before termination

validate

type function

default function(){ return true; }

Function to determine if a connection is still valid

decorate

type array

default []

Array of string method names on the {Connection} class to be "decorated". A decorated method must return a promise.

Dive in!

Click here to view more examples.

var PoolParty = require('pool-party');
var Promise = require('bluebird');
var jsforce = require('jsforce');

// Create a "pool" instance
var db = new PoolParty({
  factory: function(){

    // Create a conneciton instance
    var conn = new jsforce.Connection({
      loginUrl: // LOGIN_URL,
      accessToken: // TOKEN
    });

    // Methods that aren't promisified can't be decorated
    conn.query = Promise.promisify(conn.query, conn);
    conn.login = Promise.promisify(conn.login, conn);

    return conn.login(config.Username, config.Password + config.SecurityToken)
      .then(function(){
        // Return the connection, because `conn.login` doesn't
        return conn;
      });
  },
  destroy: function(conn){
    return new Promise(function(resolve, reject) {
      conn.logout(function(err) {
        if (err) return reject(err);
        resolve(true);
      });
    });
  },
  decorate: ['query','sobject'],
  max: 10
});

Interact with data! Splash fight!

Returns a promise with the transaction results

// Query data!
return db.query(/* SOQL Query */); // Returns a promise with query results

// Update stuff!
return db.sobject('Account__c')
  .then(function(sobject) {
    return sobject.update({/* Cool account stuff */});
  });

Arm Floaties

Be sure not to create multiple PoolParty instances, each instance manages the connection pool so you don't have to!

Ah, man. SalesForce peed in the pool...

0.2.8

9 years ago

0.2.7

9 years ago

0.2.6

9 years ago

0.2.5

9 years ago

0.2.4

9 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago