paradigm-core
Version:
Paradigm Core Modules
139 lines (107 loc) • 2.52 kB
JavaScript
const {logger, RootController} = require('structure-core')
const TemplateModel = require('../models/template')
/**
* TemplatesController Class
*
* @public
* @class TemplatesController
*/
class TemplatesController extends RootController {
/**
* TemplatesController constructor
*
* @public
* @constructor
* @param {Object} options - Options
*/
constructor(options = {}) {
super(Object.assign({}, {
name: 'templates'
}, options))
}
/**
* Create new template
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
create(req, res) {
var template = new TemplateModel()
return template.create(req.body)
}
/**
* Create new template from existing template
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
fork(req, res) {
var templateId = req.params.id
logger.debug('Forking template', templateId)
return new Promise( async (resolve, reject) => {
var templateModel = new TemplateModel()
try {
var doc1 = await templateModel.getById(templateId)
logger.debug('Feteched template', doc1)
}
catch(e) {
logger.error(e)
return reject(e)
}
try {
var pkg = Object.assign({}, doc1, {
forkId: doc1.id,
forkRevisionAt: doc1.activeRevisionId,
forkType: 'template'
})
delete pkg.id
delete pkg.sid
delete pkg.activeRevisionId
delete pkg.revisionIds
var doc2 = await templateModel.create(pkg)
logger.debug('Created template', doc2)
}
catch(e) {
logger.error(e)
return reject(e)
}
resolve(doc2)
})
}
/**
* Get template by id
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
getById(req, res) {
var template = new TemplateModel()
return template.getById(req.params.id)
}
/**
* Get all templates
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
getAll(req, res) {
var template = new TemplateModel()
return template.getAll()
}
/**
* Update a template
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
updateById(req, res) {
var template = new TemplateModel()
return template.updateById(req.params.id, req.body)
}
}
module.exports = TemplatesController