Add option to singular routes

This commit is contained in:
typicode
2018-12-25 23:47:35 +01:00
parent 49f5583c37
commit dde5636bdb
3 changed files with 83 additions and 10 deletions

View File

@ -53,7 +53,7 @@ module.exports = (db, opts = { foreignKeySuffix: 'Id', _isFake: false }) => {
// Create routes
db.forEach((value, key) => {
if (_.isPlainObject(value)) {
router.use(`/${key}`, singular(db, key))
router.use(`/${key}`, singular(db, key, opts))
return
}

View File

@ -3,7 +3,7 @@ const write = require('./write')
const getFullURL = require('./get-full-url')
const delay = require('./delay')
module.exports = (db, name) => {
module.exports = (db, name, opts) => {
const router = express.Router()
router.use(delay)
@ -13,8 +13,12 @@ module.exports = (db, name) => {
}
function create(req, res, next) {
db.set(name, req.body).value()
res.locals.data = db.get(name).value()
if (opts._isFake) {
res.locals.data = req.body
} else {
db.set(name, req.body).value()
res.locals.data = db.get(name).value()
}
res.setHeader('Access-Control-Expose-Headers', 'Location')
res.location(`${getFullURL(req)}`)
@ -24,15 +28,25 @@ module.exports = (db, name) => {
}
function update(req, res, next) {
if (req.method === 'PUT') {
db.set(name, req.body).value()
if (opts._isFake) {
if (req.method === 'PUT') {
res.locals.data = req.body
} else {
const resource = db.get(name).value()
res.locals.data = { ...resource, ...req.body }
}
} else {
db.get(name)
.assign(req.body)
.value()
if (req.method === 'PUT') {
db.set(name, req.body).value()
} else {
db.get(name)
.assign(req.body)
.value()
}
res.locals.data = db.get(name).value()
}
res.locals.data = db.get(name).value()
next()
}