143 lines
3.2 KiB
JavaScript
Raw Normal View History

2016-03-18 11:12:50 +01:00
'use strict';
/**
* Module dependencies
*/
// Node.js core.
const fs = require('fs');
const path = require('path');
// Public node modules.
const _ = require('lodash');
/**
* Expose main routes of the generated API
*/
module.exports = function dataForRoutesJSON(scope) {
const newRoutes = {
routes: {}
};
// JSON API support is enabled or not.
let hasJSONAPI = false;
try {
const JSONAPI = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), 'config', 'general.json'))).jsonapi;
if (_.isPlainObject(JSONAPI) && _.get(JSONAPI, 'enabled') === true) {
hasJSONAPI = true;
}
} catch (err) {
throw err;
}
// JSON API enabled
if (hasJSONAPI) {
newRoutes.routes['GET /' + scope.idPluralized] = {
controller: scope.globalID,
action: 'find',
policies: []
};
newRoutes.routes['GET /' + scope.id + '/:id'] = {
controller: scope.globalID,
action: 'findOne',
policies: []
};
newRoutes.routes['GET /' + scope.id + '/:id/relationships/:relation'] = {
controller: scope.globalID,
action: 'findOne',
policies: []
};
newRoutes.routes['GET /' + scope.id + '/:id/:relation'] = {
controller: scope.globalID,
action: 'findOne',
policies: []
};
newRoutes.routes['POST /' + scope.id] = {
controller: scope.globalID,
action: 'create',
policies: []
};
newRoutes.routes['PATCH /' + scope.id + '/:id'] = {
controller: scope.globalID,
action: 'update',
policies: []
};
newRoutes.routes['DELETE /' + scope.id + '/:id'] = {
controller: scope.globalID,
action: 'destroy',
policies: []
};
newRoutes.routes['POST /' + scope.id + '/:id/relationships/:relation'] = {
controller: scope.globalID,
action: 'createRelation',
policies: []
};
newRoutes.routes['PATCH /' + scope.id + '/:id/relationships/:relation'] = {
controller: scope.globalID,
action: 'updateRelation',
policies: []
};
2016-03-18 11:12:50 +01:00
newRoutes.routes['DELETE /' + scope.id + '/:id/relationships/:relation'] = {
controller: scope.globalID,
action: 'destroyRelation',
policies: []
};
} else {
newRoutes.routes['GET /' + scope.id] = {
controller: scope.globalID,
action: 'find',
policies: []
};
newRoutes.routes['GET /' + scope.id + '/:id'] = {
controller: scope.globalID,
action: 'findOne',
policies: []
};
newRoutes.routes['POST /' + scope.id] = {
controller: scope.globalID,
action: 'create',
policies: []
};
newRoutes.routes['PUT /' + scope.id + '/:id'] = {
controller: scope.globalID,
action: 'update',
policies: []
};
newRoutes.routes['DELETE /' + scope.id + '/:id'] = {
controller: scope.globalID,
action: 'destroy',
policies: []
};
newRoutes.routes['POST /' + scope.id + '/:parentId/:relation'] = {
controller: scope.globalID,
action: 'createRelation',
policies: []
};
newRoutes.routes['DELETE /' + scope.id + '/:parentId/:relation/:id'] = {
controller: scope.globalID,
action: 'destroyRelation',
policies: []
};
}
return newRoutes;
};