diff --git a/src/modules/skill/controller.js b/src/modules/skill/controller.js deleted file mode 100644 index e42c58f..0000000 --- a/src/modules/skill/controller.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * the skill controller - */ - -const service = require('./service') -const helper = require('../../common/helper') -const methods = helper.getControllerMethods(service) - -module.exports = { - ...methods -} diff --git a/src/modules/skill/route.js b/src/modules/skill/route.js deleted file mode 100644 index b8c406a..0000000 --- a/src/modules/skill/route.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * the skill routes - */ - -const Controller = require('./controller') -const consts = require('../../consts') -module.exports = { - '/skills': { - get: { - method: Controller.search, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skill', 'all:skill'] - }, - post: { - method: Controller.create, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['create:skill', 'all:skill'] - }, - head: { - method: Controller.search, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skill', 'all:skill'] - } - }, - '/skills/:id': { - get: { - method: Controller.get, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skill', 'all:skill'] - }, - head: { - method: Controller.get, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skill', 'all:skill'] - }, - patch: { - method: Controller.patch, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['update:skill', 'all:skill'] - }, - delete: { - method: Controller.remove, - auth: 'jwt', - access: [...consts.AdminUser, consts.UserRoles.ubahn], - scopes: ['delete:skill', 'all:skill'] - } - } -} diff --git a/src/modules/skill/service.js b/src/modules/skill/service.js deleted file mode 100644 index cfccdcb..0000000 --- a/src/modules/skill/service.js +++ /dev/null @@ -1,157 +0,0 @@ -/** - * the skill services - */ - -const joi = require('@hapi/joi') -const _ = require('lodash') - -const errors = require('../../common/errors') -const helper = require('../../common/helper') -const dbHelper = require('../../common/db-helper') -const serviceHelper = require('../../common/service-helper') -const sequelize = require('../../models/index') - -const Skill = sequelize.models.Skill -const SkillsProvider = sequelize.models.SkillsProvider -const UsersSkill = sequelize.models.UsersSkill -const resource = serviceHelper.getResource('Skill') -const uniqueFields = [['skillProviderId', 'externalId', 'name']] - -/** - * create entity - * @param entity the request device entity - * @param auth the auth information - * @return {Promise} the created device - */ -async function create (entity, auth) { - await dbHelper.get(SkillsProvider, entity.skillProviderId) - await dbHelper.makeSureUnique(Skill, entity, uniqueFields) - - const result = await dbHelper.create(Skill, entity, auth) - await serviceHelper.createRecordInEs(resource, result.dataValues) - - return result -} - -create.schema = { - entity: { - skillProviderId: joi.string().required(), - name: joi.string().required(), - uri: joi.string(), - externalId: joi.string() - }, - auth: joi.object() -} - -/** - * patch device by id - * @param id the device id - * @param entity the request device entity - * @param auth the auth object - * @param params the query params - * @return {Promise} the updated device - */ -async function patch (id, entity, auth, params) { - if (entity.skillProviderId) { - await dbHelper.get(SkillsProvider, entity.skillProviderId) - } - await dbHelper.makeSureUnique(Skill, entity, uniqueFields) - - const newEntity = await dbHelper.update(Skill, id, entity, auth) - await serviceHelper.patchRecordInEs(resource, newEntity.dataValues) - - return newEntity -} - -patch.schema = { - id: joi.string(), - entity: { - skillProviderId: joi.string(), - name: joi.string(), - uri: joi.string(), - externalId: joi.string() - }, - auth: joi.object(), - params: joi.object() -} - -/** - * get device by id - * @param id the device id - * @param auth the auth obj - * @param params the path parameters - * @param query the query parameters - * @param fromDb Should we bypass Elasticsearch for the record and fetch from db instead? - * @return {Promise} the db device - */ -async function get (id, auth, params, query = {}, fromDb = false) { - const trueParams = _.assign(params, query) - if (!fromDb) { - const esResult = await serviceHelper.getRecordInEs(resource, id, trueParams, auth) - if (esResult) { - return esResult - } - } - - const recordObj = await dbHelper.get(Skill, id) - if (!recordObj) { - throw errors.newEntityNotFoundError(`cannot find ${Skill.name} where ${_.map(trueParams, (v, k) => `${k}:${v}`).join(', ')}`) - } - - helper.permissionCheck(auth, recordObj) - return recordObj -} - -/** - * search devices by query - * @param query the search query - * @param auth the auth object - * @return {Promise} the results - */ -async function search (query, auth) { - // get from elasticsearch, if that fails get from db - // and response headers ('X-Total', 'X-Page', etc.) are not set in case of db return - const esResult = await serviceHelper.searchRecordInEs(resource, query, auth) - if (esResult) { - return esResult - } - - const items = await dbHelper.find(Skill, query, auth) - return { fromDb: true, result: items, total: items.length } -} - -search.schema = { - query: { - page: joi.id(), - perPage: joi.pageSize(), - skillProviderId: joi.string(), - name: joi.string(), - externalId: joi.string(), - orderBy: joi.string() - }, - auth: joi.object() -} - -/** - * remove entity by id - * @param id the entity id - * @param auth the auth object - * @param params the query params - * @return {Promise} no data returned - */ -async function remove (id, auth, params) { - const existing = await dbHelper.find(UsersSkill, { skillId: id }) - if (existing.length > 0) { - throw errors.deleteConflictError(`Please delete ${UsersSkill.name} with ids ${existing.map(o => o.id)}`) - } - await dbHelper.remove(Skill, id) - await serviceHelper.deleteRecordFromEs(id, params, resource) -} - -module.exports = { - create, - search, - patch, - get, - remove -} diff --git a/src/modules/skillsProvider/controller.js b/src/modules/skillsProvider/controller.js deleted file mode 100644 index 4a728ec..0000000 --- a/src/modules/skillsProvider/controller.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * the skillsProvider controller - */ - -const service = require('./service') -const helper = require('../../common/helper') -const methods = helper.getControllerMethods(service) - -module.exports = { - ...methods -} diff --git a/src/modules/skillsProvider/route.js b/src/modules/skillsProvider/route.js deleted file mode 100644 index 15c0045..0000000 --- a/src/modules/skillsProvider/route.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * the skillsProvider routes - */ - -const Controller = require('./controller') -const consts = require('../../consts') -module.exports = { - '/skillsProviders': { - get: { - method: Controller.search, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skillsProvider', 'all:skillsProvider'] - }, - post: { - method: Controller.create, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['create:skillsProvider', 'all:skillsProvider'] - }, - head: { - method: Controller.search, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skillsProvider', 'all:skillsProvider'] - } - }, - '/skillsProviders/:id': { - get: { - method: Controller.get, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skillsProvider', 'all:skillsProvider'] - }, - head: { - method: Controller.get, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['read:skillsProvider', 'all:skillsProvider'] - }, - patch: { - method: Controller.patch, - auth: 'jwt', - access: consts.AllAuthenticatedUsers, - scopes: ['update:skillsProvider', 'all:skillsProvider'] - }, - delete: { - method: Controller.remove, - auth: 'jwt', - access: [...consts.AdminUser, consts.UserRoles.ubahn], - scopes: ['delete:skillsProvider', 'all:skillsProvider'] - } - } -} diff --git a/src/modules/skillsProvider/service.js b/src/modules/skillsProvider/service.js deleted file mode 100644 index 2e05452..0000000 --- a/src/modules/skillsProvider/service.js +++ /dev/null @@ -1,142 +0,0 @@ -/** - * the skillsProvider services - */ - -const joi = require('@hapi/joi') -const _ = require('lodash') - -const errors = require('../../common/errors') -const helper = require('../../common/helper') -const dbHelper = require('../../common/db-helper') -const serviceHelper = require('../../common/service-helper') -const sequelize = require('../../models/index') - -const SkillsProvider = sequelize.models.SkillsProvider -const Skill = sequelize.models.Skill -const OrganizationSkillsProvider = sequelize.models.OrganizationSkillsProvider -const resource = serviceHelper.getResource('SkillsProvider') - -/** - * create entity - * @param entity the request device entity - * @param auth the auth information - * @return {Promise} the created device - */ -async function create (entity, auth) { - const result = await dbHelper.create(SkillsProvider, entity, auth) - await serviceHelper.createRecordInEs(resource, result.dataValues) - return result -} - -create.schema = { - entity: { - name: joi.string().required() - }, - auth: joi.object() -} - -/** - * patch device by id - * @param id the device id - * @param entity the request device entity - * @param auth the auth object - * @param params the query params - * @return {Promise} the updated device - */ -async function patch (id, entity, auth, params) { - const newEntity = await dbHelper.update(SkillsProvider, id, entity, auth) - await serviceHelper.patchRecordInEs(resource, newEntity.dataValues) - return newEntity -} - -patch.schema = { - id: joi.string(), - entity: { - name: joi.string() - }, - auth: joi.object(), - params: joi.object() -} - -/** - * get device by id - * @param id the device id - * @param auth the auth obj - * @param params the path parameters - * @param query the query parameters - * @param fromDb Should we bypass Elasticsearch for the record and fetch from db instead? - * @return {Promise} the db device - */ -async function get (id, auth, params, query = {}, fromDb = false) { - const trueParams = _.assign(params, query) - if (!fromDb) { - const esResult = await serviceHelper.getRecordInEs(resource, id, trueParams, auth) - if (esResult) { - return esResult - } - } - - const recordObj = await dbHelper.get(SkillsProvider, id) - if (!recordObj) { - throw errors.newEntityNotFoundError(`cannot find ${SkillsProvider.name} where ${_.map(trueParams, (v, k) => `${k}:${v}`).join(', ')}`) - } - - helper.permissionCheck(auth, recordObj) - return recordObj -} - -/** - * search devices by query - * @param query the search query - * @param auth the auth object - * @return {Promise} the results - */ -async function search (query, auth) { - // get from elasticsearch, if that fails get from db - // and response headers ('X-Total', 'X-Page', etc.) are not set in case of db return - const esResult = await serviceHelper.searchRecordInEs(resource, query, auth) - if (esResult) { - return esResult - } - - const items = await dbHelper.find(SkillsProvider, query, auth) - return { fromDb: true, result: items, total: items.length } -} - -search.schema = { - query: { - page: joi.id(), - perPage: joi.pageSize(), - name: joi.string() - }, - auth: joi.object() -} - -/** - * remove entity by id - * @param id the entity id - * @param auth the auth object - * @param params the query params - * @return {Promise} no data returned - */ -async function remove (id, auth, params) { - let existing = await dbHelper.find(Skill, { skillProviderId: id }) - if (existing.length > 0) { - throw errors.deleteConflictError(`Please delete ${Skill.name} with ids ${existing.map(o => o.id)}`) - } - existing = await dbHelper.find(OrganizationSkillsProvider, { skillProviderId: id }) - if (existing.length > 0) { - throw errors.deleteConflictError(`Please delete ${OrganizationSkillsProvider.name} with ids ${existing.map(o => o.id)}`) - } - - await dbHelper.remove(SkillsProvider, id) - await serviceHelper.deleteRecordFromEs(id, params, resource) -} - -module.exports = { - create, - search, - patch, - get, - remove -}