feat: restore page version

This commit is contained in:
NGPixel
2020-02-29 23:40:07 -05:00
committed by Nicolas Giard
parent e50dc89519
commit e85de92715
5 changed files with 125 additions and 8 deletions

View File

@@ -385,7 +385,7 @@ module.exports = {
try {
const page = await WIKI.models.pages.query().findById(args.id)
if (!page) {
throw new Error('Invalid Page Id')
throw new WIKI.Error.PageNotFound()
}
await WIKI.models.pages.renderPage(page)
return {
@@ -394,6 +394,42 @@ module.exports = {
} catch (err) {
return graphHelper.generateError(err)
}
},
/**
* RESTORE PAGE VERSION
*/
async restore (obj, args, context) {
try {
const page = await WIKI.models.pages.query().select('path', 'localeCode').findById(args.pageId)
if (!page) {
throw new WIKI.Error.PageNotFound()
}
if (!WIKI.auth.checkAccess(context.req.user, ['write:pages'], {
path: page.path,
locale: page.localeCode
})) {
throw new WIKI.Error.PageRestoreForbidden()
}
const targetVersion = await WIKI.models.pageHistory.getVersion({ pageId: args.pageId, versionId: args.versionId })
if (!targetVersion) {
throw new WIKI.Error.PageNotFound()
}
await WIKI.models.pages.updatePage({
...targetVersion,
id: targetVersion.pageId,
user: context.req.user,
action: 'restored'
})
return {
responseResult: graphHelper.generateSuccess('Page version restored successfully.')
}
} catch (err) {
return graphHelper.generateError(err)
}
}
},
Page: {