Files
talk/graph/helpers/response.js
T
2017-08-04 22:02:44 +07:00

33 lines
733 B
JavaScript

const errors = require('../../errors');
const {Error: {ValidationError}} = require('mongoose');
/**
* Wraps up a promise or value to return an object with the resolution of the promise
* keyed at `key` or an error caught at `errors`.
*/
const wrapResponse = (key) => (promiseOrValue) => {
return Promise.resolve(promiseOrValue).then((value) => {
let res = {};
if (key) {
res[key] = value;
}
return res;
})
.catch((err) => {
if (err instanceof errors.APIError) {
return {
errors: [err]
};
} else if (err instanceof ValidationError) {
// TODO: wrap this with one of our internal errors.
throw err;
}
throw err;
});
};
module.exports = wrapResponse;