paradigm-taxonomies
Version:
195 lines (149 loc) • 3.69 kB
JavaScript
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