diff --git a/package.json b/package.json index 073fa31..2639f8b 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ }, "dependencies": { "babel": "5.8.3", + "boom": "^3.2.2", "joi": "7.2.1", "lodash": "4.0.0" } diff --git a/src/crud.js b/src/crud.js index 5af5d2a..7f62721 100644 --- a/src/crud.js +++ b/src/crud.js @@ -2,6 +2,7 @@ import joi from 'joi'; import error from './error'; import _ from 'lodash'; import { parseInclude, parseWhere } from './utils'; +import { notFound } from 'boom'; let prefix; let defaultConfig; @@ -50,16 +51,19 @@ export const get = (server, model) => { async handler(request, reply) { const include = parseInclude(request); const where = parseWhere(request); - if (request.params.id) where.id = request.params.id; + const {id} = request.params; + if (id) where.id = id; const instance = await model.findOne({ where, include }); + if (!instance) return void reply(notFound(`${id} not found.`)); + reply(instance); }, config: _.defaultsDeep({ validate: { params: joi.object().keys({ - id: joi.number().integer() + id: joi.any() }) } }, defaultConfig) @@ -186,12 +190,15 @@ export const update = (server, model) => { @error async handler(request, reply) { - let instance = await model.findOne({ + const {id} = request.params; + const instance = await model.findOne({ where: { - id: request.params.id + id } }); + if (!instance) return void reply(notFound(`${id} not found.`)); + await instance.update(request.payload); reply(instance);