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');
|
|
|
|
|
2020-01-22 11:29:37 +01:00
|
|
|
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
|
|
|
|
*/
|
|
|
|
|
2016-07-11 13:03:35 +02:00
|
|
|
module.exports = scope => {
|
2020-03-25 09:31:21 +01:00
|
|
|
let routes = [];
|
|
|
|
if (!scope.args.plugin) {
|
|
|
|
routes =
|
|
|
|
scope.contentTypeKind === 'singleType'
|
|
|
|
? generateSingleTypeRoutes({ route: scope.route, name: scope.name })
|
|
|
|
: generateCollectionTypeRoutes({ route: scope.route, name: scope.name });
|
|
|
|
}
|
2016-12-20 20:41:42 +01:00
|
|
|
|
2020-03-25 09:31:21 +01:00
|
|
|
// if routes.json already exists, then merge
|
2020-01-22 10:51:33 +01:00
|
|
|
if (fs.existsSync(scope.rootPath)) {
|
2020-03-25 09:31:21 +01:00
|
|
|
let current = require(scope.rootPath);
|
|
|
|
fs.unlinkSync(scope.rootPath);
|
|
|
|
routes = _.concat(routes, _.differenceWith(current.routes, routes, _.isEqual));
|
2016-12-20 20:41:42 +01:00
|
|
|
}
|
|
|
|
|
2020-01-22 11:29:37 +01:00
|
|
|
return { routes };
|
2016-03-18 11:12:50 +01:00
|
|
|
};
|