multi-data-source

1.0.1 • Public • Published

multi-data-source

Node.js library which helps developers to manage multiple RDBMS connections to different databases

NPM Version

Installation

npm install multi-data-source

Features

  • Multiple data sources support
  • Multiple RDBMS support (only PostgreSQL and MySQL for now, but you feel free to contribute your own connector to favorite RDBMS)
  • Named params with param wrapping module

Dependencies

  • pg -- Used to handle Postgres connection
  • mysql2 -- Used to handle MySQL connection
  • query-template -- Used to process queries before execution (templating and parametrizing)

Usage example

Storage config example

const config = {
    'postgres': {
        'host': '127.0.0.1',
        'port': 5432,
        'database': 'postgres',
        'user': 'postgres',
        'password': '',
        'storageType': 'pg',
    },
};
 
const storage = new Storage(config);

Query definition example

const getUsersByScore = {
    name: 'getUsersByScore',
    sql: `
        SELECT id {{nickname}}
          FROM users
          WHERE score > :score
            {{balance}}
        `,
    addons: {
        noGlobalJoin: {
            options: {propertyName: 'global', propertyValue: false},
            sql: 'INNER JOIN mega_jackpot_halls AS mjh USING(hall_id)',
        },
        nickname: {
            options: {propertyName: 'needNickname', propertyValue: true},
            sql: ', nickname',
        },
        balance: {
            options: {propertyName: 'balanceCondition', propertyValue: true},
            sql: 'AND balance >= :balance',
        },
    },
};

Query execution example

let connection;
try {
    connection = await storage.getConnection('postgres');
 
    const data = await connection.query(getUsersByScore,
        {
            score: 100,
            balance: 50,
        },
        {
            templateParams: {balanceCondition: true},
        }
    );
    console.log(data);
} catch (error) {
    console.error(error);
} finally {
    if (connection) {
        await connection.release;
    }
}

Configuration guide

Storage configuration

By default storage conig is semi-equal to pg config with additional field storageType.

Supported storage types:

  • pg -- type for PostgreSQL connection

Query configuration

This library using equal query definition to query-template

const query = {
    sql: 'SELECT * FROM table', // String with SQL code
    addons: { // Object with named additions
        addonName: { // Addition object
            sql: 'AND field1 = :field1', // String with addition SQL
            options: { // Object with addition config
                propertyName: 'field1', // Name of templating property
                propertyValue: true, // Value of templating property
            }
        }   
    }
}

Author

Pavel Romanov -- alkor@alkor.pw -- GitHub

License

Distributed under MIT License. See LICENSE for more information;

Package Sidebar

Install

npm i multi-data-source

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

40.4 kB

Total Files

19

Last publish

Collaborators

  • alkor