https://github.com/fritzy/drboom-pg
DrBoom plugin for Postgresql errors.
https://github.com/fritzy/drboom-pg
Last synced: 8 months ago
JSON representation
DrBoom plugin for Postgresql errors.
- Host: GitHub
- URL: https://github.com/fritzy/drboom-pg
- Owner: fritzy
- Created: 2015-10-19T22:35:07.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-02-13T08:02:19.000Z (over 9 years ago)
- Last Synced: 2025-03-11T15:11:18.294Z (8 months ago)
- Language: JavaScript
- Size: 3.91 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dr. Boom: Postgres
[](https://www.npmjs.com/package/pgboom)
Auto-cast errors from `pg` into Hapi HTTP Errors.
##Example / Boilerplate
Plugin registration boilerplate:
```javascript
var hapi = require('hapi');
var config = require('./config.json');
var Boom = require('boom');
var server = new hapi.Server();
server.connection(config);
server.register([{
register: require('drboom')(),
options: {
plugins: [require('drboom-pg')({getNull404: true,
extendConditions: {
'2201W': function (err) {
return Boom.badRequest('Invalid pagination values');
}
},
extendCategories: {
'28': function (err) {
return Boom.unauthorized('Invalid credentials');
}
}
})]
},
}, function (err) {
server.log(['startup'], 'Loaded pgboom plugin');
server.start(function (err) {
//...
}
});
```
Now, you can pass your postgres errors right on through to hapi reply!
```javascript
function someHandler(request, reply) {
pg.query("SELECT id FROM request.params.id", function (err, results) {
reply(err, results.rows);
});
});
```
## Options
__getNull404__: Boolean. If the handler request method is GET, and postgres doesn't pass a result, throw a 404 Not Found error regardless of there not being a postgres error. Default: False
__extendConditions__: Object. Keys of postgres error codes, mapped to functions that return Boom objects.
__extendCategories__: Object. Keys of the first 2 digits of error codes, mapped to functions that return Boom objects.
## Default Conditions and Categories
```javascript
var condition = {
'23505': function (err) {
return Boom.conflict(util.format("Failed relationship constraint: %s", err.constraint));
},
'42501': function (err) {
return Boom.forbidden(err.toString());
}
}
var category = {
'08': function (err) {
return Boom.serverTimeout('Database unavailable');
},
'53': function (err) {
return Boom.serverTimeout('Database unavailable');
},
'22': function (err) {
return Boom.badData(err.toString());
},
'23': function (err) {
return Boom.badData(err.constraint);
}
}
```
I'll gladly accept pull requests!