page.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. const graphHelper = require('../../helpers/graph')
  2. /* global WIKI */
  3. module.exports = {
  4. Query: {
  5. async pages() { return {} }
  6. },
  7. Mutation: {
  8. async pages() { return {} }
  9. },
  10. PageQuery: {
  11. async history(obj, args, context, info) {
  12. return WIKI.models.pageHistory.getHistory({
  13. pageId: args.id,
  14. offsetPage: args.offsetPage || 0,
  15. offsetSize: args.offsetSize || 100
  16. })
  17. },
  18. async search (obj, args, context) {
  19. if (WIKI.data.searchEngine) {
  20. return WIKI.data.searchEngine.query(args.query, args)
  21. } else {
  22. return {
  23. results: [],
  24. suggestions: [],
  25. totalHits: 0
  26. }
  27. }
  28. },
  29. async list (obj, args, context, info) {
  30. return WIKI.models.pages.query().column([
  31. 'id',
  32. 'path',
  33. { locale: 'localeCode' },
  34. 'title',
  35. 'description',
  36. 'isPublished',
  37. 'isPrivate',
  38. 'privateNS',
  39. 'contentType',
  40. 'createdAt',
  41. 'updatedAt'
  42. ]).modify(queryBuilder => {
  43. if (args.limit) {
  44. queryBuilder.limit(args.limit)
  45. }
  46. const orderDir = args.orderByDirection === 'DESC' ? 'desc' : 'asc'
  47. switch (args.orderBy) {
  48. case 'CREATED':
  49. queryBuilder.orderBy('createdAt', orderDir)
  50. break
  51. case 'PATH':
  52. queryBuilder.orderBy('path', orderDir)
  53. break
  54. case 'TITLE':
  55. queryBuilder.orderBy('title', orderDir)
  56. break
  57. case 'UPDATED':
  58. queryBuilder.orderBy('updatedAt', orderDir)
  59. break
  60. default:
  61. queryBuilder.orderBy('id', orderDir)
  62. break
  63. }
  64. })
  65. },
  66. async single (obj, args, context, info) {
  67. let page = await WIKI.models.pages.getPageFromDb(args.id)
  68. if (page) {
  69. return {
  70. ...page,
  71. locale: page.localeCode,
  72. editor: page.editorKey
  73. }
  74. } else {
  75. throw new WIKI.Error.PageNotFound()
  76. }
  77. }
  78. },
  79. PageMutation: {
  80. async create(obj, args, context) {
  81. const page = await WIKI.models.pages.createPage({
  82. ...args,
  83. authorId: context.req.user.id
  84. })
  85. return {
  86. responseResult: graphHelper.generateSuccess('Page created successfully.'),
  87. page
  88. }
  89. },
  90. async delete(obj, args, context) {
  91. await WIKI.models.pages.deletePage({
  92. ...args,
  93. authorId: context.req.user.id
  94. })
  95. return {
  96. responseResult: graphHelper.generateSuccess('Page has been deleted.')
  97. }
  98. },
  99. async update(obj, args, context) {
  100. const page = await WIKI.models.pages.updatePage({
  101. ...args,
  102. authorId: context.req.user.id
  103. })
  104. return {
  105. responseResult: graphHelper.generateSuccess('Page has been updated.'),
  106. page
  107. }
  108. },
  109. async flushCache(obj, args, context) {
  110. try {
  111. await WIKI.models.pages.flushCache()
  112. return {
  113. responseResult: graphHelper.generateSuccess('Pages Cache has been flushed successfully.')
  114. }
  115. } catch (err) {
  116. return graphHelper.generateError(err)
  117. }
  118. },
  119. async migrateToLocale(obj, args, context) {
  120. try {
  121. const count = await WIKI.models.pages.migrateToLocale(args)
  122. return {
  123. responseResult: graphHelper.generateSuccess('Migrated content to target locale successfully.'),
  124. count
  125. }
  126. } catch (err) {
  127. return graphHelper.generateError(err)
  128. }
  129. }
  130. },
  131. Page: {
  132. // comments(pg) {
  133. // return pg.$relatedQuery('comments')
  134. // }
  135. }
  136. }