paradigm-core
Version:
Paradigm Core Modules
200 lines (152 loc) • 3.9 kB
JavaScript
const {
RootController,
DigitalAssetsPlugin: {DigitalAssetModel}
} = require('structure-core')
const PageModel = require('../models/page')
/**
* PageController Class
*
* @public
* @class PageController
*/
class PageController extends RootController {
/**
* PageController constructor
*
* @public
* @constructor
* @param {Object} options - Options
*/
constructor(options = {}) {
super(Object.assign({}, {
name: 'pages'
}, options))
}
/**
* Create new page
*
* @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 pageModel = new PageModel({
applicationId,
logger: this.logger,
organizationId
})
const pkg = req.body
if(!pkg.applicationId) {
pkg.applicationId = req.headers.applicationid
}
if(!pkg.organizationId) {
pkg.organizationId = req.headers.organizationid
}
return pageModel.create(pkg)
}
deleteById(req, res) {
const applicationId = req.headers.applicationid
const organizationId = req.headers.organizationid
const pageModel = new PageModel({
applicationId,
logger: this.logger,
organizationId
})
return pageModel.deleteById(req.params.id)
}
/**
* Get all pages
*
* @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 pageModel = new PageModel({
applicationId,
logger: this.logger,
organizationId
})
return pageModel.getAll([], {
applicationId: req.headers.applicationid,
organizationId: req.headers.organizationid
})
}
/**
* Get a page by id
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
async getById(req, res) {
const applicationId = req.headers.applicationid
const organizationId = req.headers.organizationid
const pageModel = new PageModel({
applicationId,
logger: this.logger,
organizationId
})
const page = await pageModel.getById(req.params.id)
if (page.imageId) {
const daModel = new DigitalAssetModel({
organizationId: this.organizationId,
applicationId: this.applicationId,
logger: this.logger
})
const da = await daModel.getById(page.imageId)
page.image = da
}
return page
}
/**
* Get a page by slug
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
async getBySlug(req, res) {
const applicationId = req.headers.applicationid
const organizationId = req.headers.organizationid
const pageModel = new PageModel({
applicationId,
logger: this.logger,
organizationId
})
const page = await pageModel.getBySlug(req.params.slug)
if (page.imageId) {
const daModel = new DigitalAssetModel({
organizationId: this.organizationId,
applicationId: this.applicationId,
logger: this.logger
})
const da = await daModel.getById(page.imageId)
page.image = da
}
return page
}
/**
* Update a page
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
updateById(req, res) {
const applicationId = req.headers.applicationid
const organizationId = req.headers.organizationid
const pageModel = new PageModel({
applicationId,
logger: this.logger,
organizationId
})
const pkg = req.body
return pageModel.updateById(req.params.id, pkg)
}
}
module.exports = PageController