67 lines
1.6 KiB
JavaScript

const { Page } = require('../models/models')
const log = require('../../log')
const pageController = {
async getAll (req, res) {
const pages = await Page.findAll({ raw: true })
return res.json(pages)
},
async get (req, res) {
const slug = req.params.page_slug
const allowed = req?.user?.is_admin || req?.user?.is_editor
try {
const page = await Page.findOne({ where: { slug, ...( !allowed && { visible: true }) }})
return res.json(page)
} catch (e) {
log.error('Get page failed:', String(e))
return res.sendStatus(404)
}
},
async add (req, res) {
const pageDetail = {
title: req.body.title,
content: req.body.content,
visible: true
}
log.info('Create page: ' + req.body.title)
const page = await Page.create(pageDetail)
res.json(page)
},
async update (req, res) {
const pageDetails = {
title: req.body.title,
content: req.body.content,
visible: req.body.visible
}
const page_id = req.params.page_id
try {
let page = await Page.findByPk(page_id)
page = await page.update(pageDetails)
res.json(page)
} catch (e) {
log.error('Toggle page failed', e)
res.sendStatus(404)
}
},
async remove (req, res) {
log.info('Remove page ', req.params.page_id)
const page_id = req.params.page_id
try {
const page = await Page.findByPk(page_id)
await page.destroy()
res.sendStatus(200)
} catch (e) {
log.error('Remove page failed:', e)
res.sendStatus(404)
}
}
}
module.exports = pageController