UNPKG

paradigm-taxonomies

Version:
195 lines (149 loc) 3.69 kB
const RootController = require('structure-root-controller') const TaxonomyModel = require('./model') const slug = require('paradigm-slugs') /** * TaxonomiesController Class * * @public * @class TaxonomiesController */ class Controller extends RootController { /** * TaxonomiesController constructor * * @public * @constructor * @param {Object} options - Options */ constructor(options = {}) { super(Object.assign({}, { name: 'taxonomies' }, options)) } /** * Create new taxonomy * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ async create(req, res) { const applicationId = req.headers.applicationid const organizationId = req.headers.organizationid const taxonomy = new TaxonomyModel({ applicationId, logger: this.logger, organizationId }) var pkg = req.body pkg.applicationId = applicationId pkg.organizationId = organizationId pkg.slug = slug(pkg.title) pkg.status = 'active' const doc = await taxonomy.getBySlug(pkg.slug) // Don't re-create the same taxonomy if(doc) { return Promise.resolve(doc) } return taxonomy.create(pkg) } deleteById(req, res) { const applicationId = req.headers.applicationid const organizationId = req.headers.organizationid const taxonomy = new TaxonomyModel({ applicationId, logger: this.logger, organizationId }) return taxonomy.deleteById(req.params.id) } /** * Get all taxonomies * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ getAll(req, res) { const applicationId = req.headers.applicationid const organizationId = req.headers.organizationid const taxonomy = new TaxonomyModel({ applicationId, logger: this.logger, organizationId }) return taxonomy.getAll([]) } /** * Get taxonomy by id * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ getById(req, res) { const taxonomy = new TaxonomyModel({ logger: this.logger, }) return taxonomy.getById(req.params.id) } /** * Get taxonomy by slug * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ getBySlug(req, res) { const applicationId = req.headers.applicationid const organizationId = req.headers.organizationid const taxonomy = new TaxonomyModel({ applicationId, logger: this.logger, organizationId }) return taxonomy.getBySlug(req.params.slug) } /** * Match taxonomy by slug * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ matchBySlug(req, res) { const applicationId = req.headers.applicationid const organizationId = req.headers.organizationid const taxonomy = new TaxonomyModel({ applicationId, logger: this.logger, organizationId }) return taxonomy.matchBySlug(req.params.slug) } /** * Update a taxonomy * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ updateById(req, res) { const taxonomyModel = new TaxonomyModel({ logger: this.logger, }) const pkg = req.body pkg.slug = slug(pkg.title) return new Promise( async (resolve, reject) => { try { const taxonomy = await taxonomyModel.updateById(req.params.id, pkg) resolve(taxonomy) } catch(e) { logger.error(e) reject(e) } }) } } module.exports = Controller