Implement Persistence

When deploying an application which uses the Proxy SDK in a highly available manner, the in-memory persistence which the SDK uses by default may not be appropriate, and instead there may be the need to store the transaction information elsewhere.

Some options for this storage would include:

  • Some third party data tier such as a RDBMs, noSQL database or Redis
  • In an encrypted cookie held and presented by the client

These each have pros and cons and should be selected at the discretion of the application developer.

When a persistence method is decided upon, in order to have the Proxy SDK make use of it is to implement and pass in functions to handle each operation when initializing the SDK :

const config = {

const transactionFunctions = {
  createTransaction: myCreateTransactionFunction,
  getTransaction: myGetTransactionFunction,
  updateTransaction: myUpdateTransactionFunction,
  deleteTransaction: myDeleteTransactionFunction

const adaptive = new Adaptive(config, transactionFunctions);

The function prototypes are as follows:

 * @property {object} transaction value to store. 
 * @return {string} the transactionId which the transaction was stored under
function createTransaction(transaction) {}
 * @property {string} transactionId ID of transaction to look up
 * @return {object} looked up transaction
function getTransaction(transactionId) {}
 * @property {string} transactionId index to update
 * @property {object} transaction values to update. These values should be added with any existing values in a union where new values take precedence.
function updateTransaction(transactionId, transaction) {}

 * @property {string} transactionId to delete
function deleteTransaction(transactionId) {}