feat: history version diff

This commit is contained in:
NGPixel
2020-02-23 23:53:27 -05:00
committed by Nicolas Giard
parent 27ff329d16
commit 95f01cdeb8
5 changed files with 175 additions and 40 deletions

View File

@@ -21,6 +21,15 @@ module.exports = {
offsetSize: args.offsetSize || 100
})
},
/**
* PAGE VERSION
*/
async version(obj, args, context, info) {
return WIKI.models.pageHistory.getVersion({
pageId: args.pageId,
versionId: args.versionId
})
},
/**
* SEARCH PAGES
*/

View File

@@ -19,7 +19,12 @@ type PageQuery {
id: Int!
offsetPage: Int
offsetSize: Int
): PageHistoryResult @auth(requires: ["manage:system", "read:pages"])
): PageHistoryResult @auth(requires: ["manage:system", "read:history"])
version(
pageId: Int!
versionId: Int!
): PageVersion @auth(requires: ["manage:system", "read:history"])
search(
query: String!
@@ -150,7 +155,7 @@ type Page {
isPublished: Boolean!
privateNS: String
publishStartDate: Date!
publishEndDate: String!
publishEndDate: Date!
tags: [PageTag]!
content: String!
render: String
@@ -186,6 +191,27 @@ type PageHistory {
createdAt: Date!
}
type PageVersion {
action: String!
authorId: String!
authorName: String!
content: String!
contentType: String!
createdAt: Date!
description: String!
editor: String!
isPrivate: Boolean!
isPublished: Boolean!
locale: String!
pageId: Int!
path: String!
publishEndDate: Date!
publishStartDate: Date!
tags: [String]!
title: String!
versionId: Int!
}
type PageHistoryResult {
trail: [PageHistory]
total: Int!

View File

@@ -104,6 +104,40 @@ module.exports = class PageHistory extends Model {
})
}
static async getVersion({ pageId, versionId }) {
const version = await WIKI.models.pageHistory.query()
.column([
'pageHistory.path',
'pageHistory.title',
'pageHistory.description',
'pageHistory.isPrivate',
'pageHistory.isPublished',
'pageHistory.publishStartDate',
'pageHistory.publishEndDate',
'pageHistory.content',
'pageHistory.contentType',
'pageHistory.createdAt',
'pageHistory.action',
'pageHistory.authorId',
'pageHistory.pageId',
{
versionId: 'pageHistory.id',
editor: 'pageHistory.editorKey',
locale: 'pageHistory.localeCode',
authorName: 'author.name'
}
])
.joinRelated('author')
.where({
'pageHistory.id': versionId,
'pageHistory.pageId': pageId
}).first()
return {
...version,
tags: []
}
}
static async getHistory({ pageId, offsetPage = 0, offsetSize = 100 }) {
const history = await WIKI.models.pageHistory.query()
.column([