dsn-parser

1.0.3 • Public • Published

DSN Parser for Node

Parse and create database connection strings fluently.

Use case

I've setup a node app on Heroku and added a PostgreSQL database. Heroku provides the database credentials as an enviroment variable with the following form: pgsql://user:pass@127.0.0.1:5432/my_db.

I needed to parse it to the following way, in order to use with node-postgres package:

var config = new DSNParser(process.env.HEROKU_POSTGRESQL_COPPER_URL).getParts();
 
var pool = new pg.Pool(config);

Installation

npm install dsn-parser

Usage

Parse Data Source Name

var DSNParser = require('dsn-parser');
 
var dsn = new DSNParser('pgsql://user:pass@127.0.0.1:5432/my_db?sslmode=verify-full&application_name=myapp');
dsn.getParts();
 
/*
  driver: 'pgsql',
  user: 'user',
  password: 'pass',
  host: '127.0.0.1',
  port: 5432,
  database: 'my_db',
  params: { sslmode: 'verify-full', application_name: 'myapp' } 
*/
 
dsn.get('database'); // my_db
dsn.get('host'); // 127.0.0.1
 
dsn.set('driver', 'mysql');
dsn.set('user', 'root');
dsn.set('password', null);
dsn.set('port', 3306);
dsn.set('params', null);
 
dsn.getDSN();
// mysql://root@127.0.0.1:3306/my_db
 

Build new DSN

var DSNParser = require('dsn-parser');
 
var dsn = new DSNParser();
 
dsn.set('driver', 'mysql')
    .set('user', 'root')
    .set('password', 'mypass')
    .set('host', 'localhost')
    .set('port', 3306)
    .set('database', '7gh4d78sh2')
    .set('params', {
        charset: 'utf8',
        strict: true
    });
 
dsn.getDSN();
 
// mysql://root:mypass@localhost:3306/7gh4d78sh2?charset=utf8&strict=true

Run tests

npm test

Author

Jonnas Fonini

License

Licensed under the WTFPL

Package Sidebar

Install

npm i dsn-parser

Weekly Downloads

7,897

Version

1.0.3

License

WTFPL

Unpacked Size

8.11 kB

Total Files

4

Last publish

Collaborators

  • fonini