strapi/packages/generators/api/json/routes.json.js

109 lines
2.0 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');
// Public node modules.
const _ = require('lodash');
function generateSingleTypeRoutes({ route, name }) {
return [
{
method: 'GET',
path: '/' + route,
handler: name + '.find',
config: {
policies: [],
},
},
{
method: 'PUT',
path: '/' + route,
handler: name + '.update',
config: {
policies: [],
},
},
{
method: 'DELETE',
path: '/' + route,
handler: name + '.delete',
config: {
policies: [],
},
},
];
}
function generateCollectionTypeRoutes({ route, name }) {
return [
{
method: 'GET',
path: '/' + route,
handler: name + '.find',
config: {
policies: [],
},
},
{
method: 'GET',
path: '/' + route + '/:id',
handler: name + '.findOne',
config: {
policies: [],
},
},
{
method: 'POST',
path: '/' + route,
handler: name + '.create',
config: {
policies: [],
},
},
{
method: 'PUT',
path: '/' + route + '/:id',
handler: name + '.update',
config: {
policies: [],
},
},
{
method: 'DELETE',
path: '/' + route + '/:id',
handler: name + '.delete',
config: {
policies: [],
},
},
];
}
2016-03-18 11:12:50 +01:00
/**
* Expose main routes of the generated API
*/
module.exports = scope => {
let routes = [];
if (!scope.args.plugin) {
routes =
scope.contentTypeKind === 'singleType'
? generateSingleTypeRoutes({ route: scope.route, name: scope.name })
: generateCollectionTypeRoutes({ route: scope.route, name: scope.name });
}
// if routes.json already exists, then merge
if (fs.existsSync(scope.rootPath)) {
let current = require(scope.rootPath);
fs.unlinkSync(scope.rootPath);
routes = _.concat(routes, _.differenceWith(current.routes, routes, _.isEqual));
}
return { routes };
2016-03-18 11:12:50 +01:00
};