multi-data-source
Node.js library which helps developers to manage multiple RDBMS connections to different databases
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 = 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; const data = await connection; console; catch error console; finally if connection await connectionrelease;
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;