https://github.com/nfroidure/postgresql-service
A simple wrapper around `node-pg`
https://github.com/nfroidure/postgresql-service
hacktoberfest knifecycle nodejs postgresql
Last synced: 6 months ago
JSON representation
A simple wrapper around `node-pg`
- Host: GitHub
- URL: https://github.com/nfroidure/postgresql-service
- Owner: nfroidure
- License: mit
- Created: 2018-09-22T11:04:28.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2025-11-06T21:54:47.000Z (8 months ago)
- Last Synced: 2025-11-06T23:28:49.625Z (8 months ago)
- Topics: hacktoberfest, knifecycle, nodejs, postgresql
- Language: TypeScript
- Homepage: https://insertafter.com/en/blog/unobstrusive_dependency_injection_with_knifecycle.html
- Size: 3.33 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
[//]: # ( )
[//]: # (This file is automatically generated by a `metapak`)
[//]: # (module. Do not change it except between the)
[//]: # (`content:start/end` flags, your changes would)
[//]: # (be overridden.)
[//]: # ( )
# postgresql-service
> A simple wrapper around `node-pg`
[](https://github.com/nfroidure/postgresql-service/blob/main/LICENSE)
[//]: # (::contents:start)
This simple service covers my own usage of the `pg` module. I only use
transactions and queries and I use dependency injection with
[Knifecycle](https://github.com/nfroidure/knifecycle).
It also sets up a few tweaks I have to do for each projects like avoiding to
mess up with dates.
## Tagged templates
You may like to use [pgsqwell](https://github.com/nfroidure/pgsqwell) with this
module.
[//]: # (::contents:end)
## initPGService(services) ⇒ Promise.<Object>
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**
```js
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)](#initPGService) ⇒ Promise.<Object>
* [~query()](#initPGService..query) ⇒ String \| Object
* [~queries()](#initPGService..queries) ⇒ Array.<String> \| Object
* [~transaction()](#initPGService..transaction) ⇒ Array.<String> \| Object
### initPGService~query() ⇒ String \| Object
Executes the given query
**Kind**: inner method of [initPGService](#initPGService)
**Returns**: String - Query to executeObject - Arguments hash for the query
**Example**
```js
const { rows, fields } = await pg.query(
'SELECT * FROM users WHERE user = $$userId',
{ userId: 1 }
);
```
### initPGService~queries() ⇒ Array.<String> \| Object
Executes the given queries in parallel (using the connections pool)
**Kind**: inner method of [initPGService](#initPGService)
**Returns**: Array.<String> - Queries to executeObject - Arguments hashes for the queries
**Example**
```js
const [{ rows, fields }, { rows2, fields2 }] = await pg.queries([
'SELECT * FROM users WHERE user = $$userId',
'SELECT * FROM users WHERE user = $$userId',
], { userId: 1 });
```
### initPGService~transaction() ⇒ Array.<String> \| Object
Executes the given queries in a single transaction
**Kind**: inner method of [initPGService](#initPGService)
**Returns**: Array.<String> - Queries to executeObject - Arguments hashes for the queries
**Example**
```js
const [, { rows, fields }] = await pg.transaction([
'UPDATE users SET isActive = true WHERE user = $$userId',
'SELECT * FROM users WHERE user = $$userId',
], { userId: 1 });
```
# Authors
- [Nicolas Froidure](http://insertafter.com/en/index.html)
# License
[MIT](https://github.com/nfroidure/postgresql-service/blob/main/LICENSE)