feat: restore page version
This commit is contained in:
@@ -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: {
|
||||
|
@@ -129,6 +129,11 @@ type PageMutation {
|
||||
render(
|
||||
id: Int!
|
||||
): DefaultResponse @auth(requires: ["manage:system"])
|
||||
|
||||
restore(
|
||||
pageId: Int!
|
||||
versionId: Int!
|
||||
): DefaultResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"])
|
||||
}
|
||||
|
||||
# -----------------------------------------------
|
||||
|
@@ -153,6 +153,10 @@ module.exports = {
|
||||
message: 'Destination page path already exists.',
|
||||
code: 6006
|
||||
}),
|
||||
PageRestoreForbidden: CustomError('PageRestoreForbidden', {
|
||||
message: 'You are not authorized to restore this page version.',
|
||||
code: 6011
|
||||
}),
|
||||
PageUpdateForbidden: CustomError('PageUpdateForbidden', {
|
||||
message: 'You are not authorized to update this page.',
|
||||
code: 6009
|
||||
|
@@ -326,7 +326,8 @@ module.exports = class Page extends Model {
|
||||
await WIKI.models.pageHistory.addVersion({
|
||||
...ogPage,
|
||||
isPublished: ogPage.isPublished === true || ogPage.isPublished === 1,
|
||||
action: 'updated'
|
||||
action: opts.action ? opts.action : 'updated',
|
||||
versionDate: ogPage.updatedAt
|
||||
})
|
||||
|
||||
// -> Update page
|
||||
@@ -422,7 +423,8 @@ module.exports = class Page extends Model {
|
||||
// -> Create version snapshot
|
||||
await WIKI.models.pageHistory.addVersion({
|
||||
...page,
|
||||
action: 'moved'
|
||||
action: 'moved',
|
||||
versionDate: page.updatedAt
|
||||
})
|
||||
|
||||
const destinationHash = pageHelper.generateHash({ path: opts.destinationPath, locale: opts.destinationLocale, privateNS: opts.isPrivate ? 'TODO' : '' })
|
||||
@@ -503,7 +505,8 @@ module.exports = class Page extends Model {
|
||||
// -> Create version snapshot
|
||||
await WIKI.models.pageHistory.addVersion({
|
||||
...page,
|
||||
action: 'deleted'
|
||||
action: 'deleted',
|
||||
versionDate: page.updatedAt
|
||||
})
|
||||
|
||||
// -> Delete page
|
||||
|
Reference in New Issue
Block a user