| 
									
										
										
										
											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 + '/count', | 
					
						
							|  |  |  |       handler: name + '.count', | 
					
						
							|  |  |  |       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
										 |  |  | }; |