UNPKG

paradigm-core

Version:
139 lines (107 loc) 2.52 kB
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