UNPKG

@openveo/core

Version:
91 lines (81 loc) 2.82 kB
'use strict'; /** * Provides functions to interpret entities definition from plugin's configuration. * * @module core/loaders/entityLoader */ /** * Builds entities for plugins. * * @example * // Results * { * core: { * mountPath: '/', * path: '/home/openveo/', * entities: { * applications: 'app/server/controllers/ApplicationController' * } * }, * publish: { * mountPath: '/publish', * path: '/home/openveo/node_modules/@openveo/publish', * entities: { * videos: 'app/server/controllers/VideoController' * } * } * } * * @param {Array} plugins The list of plugins * @return {Object} The list of entities, for plugins, ordered by plugin name * @throws {TypeError} A TypeError if plugins is not an array */ module.exports.buildEntities = function(plugins) { var entities = {}; plugins.forEach(function(loadedPlugin) { // Found a list of entities for the plugin if (loadedPlugin.entities) { entities[loadedPlugin.name] = { path: loadedPlugin.path, mountPath: loadedPlugin.mountPath, entities: loadedPlugin.entities }; } }); return entities; }; /** * Builds CRUD routes for entities. * * @example * // List of entities as described in configuration file * { * 'applications': '/home/openveo/app/server/controllers/ApplicationController' * } * * mple * // Results * { * 'get /applications/:id': '/home/openveo/app/server/controllers/ApplicationController.getEntityAction', * 'get /applications': '/home/openveo/app/server/controllers/ApplicationController.getEntitiesAction', * 'post /applications/:id': '/home/openveo/app/server/controllers/ApplicationController.updateEntityAction', * 'put /applications': '/home/openveo/app/server/controllers/ApplicationController.addEntitiesAction', * 'delete /applications/:id': '/home/openveo/app/server/controllers/ApplicationController.removeEntitiesAction' * } * * @param {Object} entities The list of entities * @return {Object} The list of routes for all entities */ module.exports.buildEntitiesRoutes = function(entities) { var entitiesRoutes = {}; // Create CRUD routes for all plugin's entities for (var entityName in entities) { var entityControllerPath = entities[entityName]; entitiesRoutes['get /' + entityName + '/:id'] = entityControllerPath + '.getEntityAction'; entitiesRoutes['get /' + entityName] = entityControllerPath + '.getEntitiesAction'; entitiesRoutes['post /' + entityName + '/:id'] = entityControllerPath + '.updateEntityAction'; entitiesRoutes['put /' + entityName] = entityControllerPath + '.addEntitiesAction'; entitiesRoutes['delete /' + entityName + '/:id'] = entityControllerPath + '.removeEntitiesAction'; } return entitiesRoutes; };