A simple wrapper around
node-pg
This simple service covers my own usage of the pg
module. I only use
transactions and queries and I use dependency injection with
Knifecycle.
It also sets up a few tweaks I have to do for each projects like avoiding to mess up with dates.
You may like to use pgsqwell with this module.
Instantiate the pg service
Kind: global function
Returns: Promise.<Object>
- A promise of the pg service
Param | Type | Description |
---|---|---|
services | Object |
The services to inject |
[services.log] | function |
A logging function |
[services.PG_URL_ENV_NAME] | Object |
The environment variable name in which to pick-up the PG url |
[services.ENV] | Object |
An environment object |
services.PG | Object |
A pg compatible configuration object |
Example
import initPGService from 'postgresql-service';
const { service: pg, dispose } = await initPGService({
log: console.log.bind(console),
ENV: process.env, // Proxy the PG_URL env var
});
const result = pg.query('SELECT 1');
await dispose();
- initPGService(services) ⇒
Promise.<Object>
- ~query() ⇒
String
|Object
- ~queries() ⇒
Array.<String>
|Object
- ~transaction() ⇒
Array.<String>
|Object
- ~query() ⇒
Executes the given query
Kind: inner method of initPGService
Returns: String
- Query to executeObject
- Arguments hash for the query
Example
const { rows, fields } = await pg.query(
'SELECT * FROM users WHERE user = $$userId',
{ userId: 1 }
);
Executes the given queries in parallel (using the connections pool)
Kind: inner method of initPGService
Returns: Array.<String>
- Queries to executeObject
- Arguments hashes for the queries
Example
const [{ rows, fields }, { rows2, fields2 }] = await pg.queries([
'SELECT * FROM users WHERE user = $$userId',
'SELECT * FROM users WHERE user = $$userId',
], { userId: 1 });
Executes the given queries in a single transaction
Kind: inner method of initPGService
Returns: Array.<String>
- Queries to executeObject
- Arguments hashes for the queries
Example
const [, { rows, fields }] = await pg.transaction([
'UPDATE users SET isActive = true WHERE user = $$userId',
'SELECT * FROM users WHERE user = $$userId',
], { userId: 1 });