mirror of https://github.com/requarks/wiki
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.6 KiB
139 lines
3.6 KiB
const graphHelper = require('../../helpers/graph')
|
|
|
|
/* global WIKI */
|
|
|
|
module.exports = {
|
|
Query: {
|
|
async pages() { return {} }
|
|
},
|
|
Mutation: {
|
|
async pages() { return {} }
|
|
},
|
|
PageQuery: {
|
|
async history(obj, args, context, info) {
|
|
return WIKI.models.pageHistory.getHistory({
|
|
pageId: args.id,
|
|
offsetPage: args.offsetPage || 0,
|
|
offsetSize: args.offsetSize || 100
|
|
})
|
|
},
|
|
async search (obj, args, context) {
|
|
if (WIKI.data.searchEngine) {
|
|
return WIKI.data.searchEngine.query(args.query, args)
|
|
} else {
|
|
return {
|
|
results: [],
|
|
suggestions: [],
|
|
totalHits: 0
|
|
}
|
|
}
|
|
},
|
|
async list (obj, args, context, info) {
|
|
return WIKI.models.pages.query().column([
|
|
'id',
|
|
'path',
|
|
{ locale: 'localeCode' },
|
|
'title',
|
|
'description',
|
|
'isPublished',
|
|
'isPrivate',
|
|
'privateNS',
|
|
'contentType',
|
|
'createdAt',
|
|
'updatedAt'
|
|
]).modify(queryBuilder => {
|
|
if (args.limit) {
|
|
queryBuilder.limit(args.limit)
|
|
}
|
|
const orderDir = args.orderByDirection === 'DESC' ? 'desc' : 'asc'
|
|
switch (args.orderBy) {
|
|
case 'CREATED':
|
|
queryBuilder.orderBy('createdAt', orderDir)
|
|
break
|
|
case 'PATH':
|
|
queryBuilder.orderBy('path', orderDir)
|
|
break
|
|
case 'TITLE':
|
|
queryBuilder.orderBy('title', orderDir)
|
|
break
|
|
case 'UPDATED':
|
|
queryBuilder.orderBy('updatedAt', orderDir)
|
|
break
|
|
default:
|
|
queryBuilder.orderBy('id', orderDir)
|
|
break
|
|
}
|
|
})
|
|
},
|
|
async single (obj, args, context, info) {
|
|
let page = await WIKI.models.pages.getPageFromDb(args.id)
|
|
if (page) {
|
|
return {
|
|
...page,
|
|
locale: page.localeCode,
|
|
editor: page.editorKey
|
|
}
|
|
} else {
|
|
throw new WIKI.Error.PageNotFound()
|
|
}
|
|
}
|
|
},
|
|
PageMutation: {
|
|
async create(obj, args, context) {
|
|
const page = await WIKI.models.pages.createPage({
|
|
...args,
|
|
authorId: context.req.user.id
|
|
})
|
|
return {
|
|
responseResult: graphHelper.generateSuccess('Page created successfully.'),
|
|
page
|
|
}
|
|
},
|
|
async delete(obj, args, context) {
|
|
await WIKI.models.pages.deletePage({
|
|
...args,
|
|
authorId: context.req.user.id
|
|
})
|
|
return {
|
|
responseResult: graphHelper.generateSuccess('Page has been deleted.')
|
|
}
|
|
},
|
|
async update(obj, args, context) {
|
|
const page = await WIKI.models.pages.updatePage({
|
|
...args,
|
|
authorId: context.req.user.id
|
|
})
|
|
return {
|
|
responseResult: graphHelper.generateSuccess('Page has been updated.'),
|
|
page
|
|
}
|
|
},
|
|
async flushCache(obj, args, context) {
|
|
try {
|
|
await WIKI.models.pages.flushCache()
|
|
return {
|
|
responseResult: graphHelper.generateSuccess('Pages Cache has been flushed successfully.')
|
|
}
|
|
} catch (err) {
|
|
return graphHelper.generateError(err)
|
|
}
|
|
},
|
|
async migrateToLocale(obj, args, context) {
|
|
try {
|
|
const count = await WIKI.models.pages.migrateToLocale(args)
|
|
return {
|
|
responseResult: graphHelper.generateSuccess('Migrated content to target locale successfully.'),
|
|
count
|
|
}
|
|
} catch (err) {
|
|
return graphHelper.generateError(err)
|
|
}
|
|
}
|
|
},
|
|
Page: {
|
|
// comments(pg) {
|
|
// return pg.$relatedQuery('comments')
|
|
// }
|
|
}
|
|
}
|