26 lines
868 B
JavaScript
26 lines
868 B
JavaScript
"use strict";
|
|
|
|
const express = require('express');
|
|
const pluralize = require('pluralize');
|
|
const delay = require('./delay');
|
|
module.exports = opts => {
|
|
const router = express.Router();
|
|
router.use(delay);
|
|
|
|
// Rewrite URL (/:resource/:id/:nested -> /:nested) and request query
|
|
function get(req, res, next) {
|
|
const prop = pluralize.singular(req.params.resource);
|
|
req.query[`${prop}${opts.foreignKeySuffix}`] = req.params.id;
|
|
req.url = `/${req.params.nested}`;
|
|
next();
|
|
}
|
|
|
|
// Rewrite URL (/:resource/:id/:nested -> /:nested) and request body
|
|
function post(req, res, next) {
|
|
const prop = pluralize.singular(req.params.resource);
|
|
req.body[`${prop}${opts.foreignKeySuffix}`] = req.params.id;
|
|
req.url = `/${req.params.nested}`;
|
|
next();
|
|
}
|
|
return router.get('/:resource/:id/:nested', get).post('/:resource/:id/:nested', post);
|
|
}; |