engine.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /* global WIKI */
  2. module.exports = {
  3. activate() {
  4. // not used
  5. },
  6. deactivate() {
  7. // not used
  8. },
  9. /**
  10. * INIT
  11. */
  12. init() {
  13. // not used
  14. },
  15. /**
  16. * QUERY
  17. *
  18. * @param {String} q Query
  19. * @param {Object} opts Additional options
  20. */
  21. async query(q, opts) {
  22. const results = await WIKI.models.pages.query()
  23. .column('id', 'title', 'description', 'path', 'localeCode as locale')
  24. .where(builder => {
  25. builder.where('isPublished', true)
  26. if (opts.locale) {
  27. builder.andWhere('localeCode', opts.locale)
  28. }
  29. if (opts.path) {
  30. builder.andWhere('path', 'like', `${opts.path}%`)
  31. }
  32. // TODO: Add user permissions filtering
  33. builder.andWhere(builderSub => {
  34. if (WIKI.config.db.type === 'postgres') {
  35. builderSub.where('title', 'ILIKE', `%${q}%`)
  36. builderSub.orWhere('description', 'ILIKE', `%${q}%`)
  37. } else {
  38. builderSub.where('title', 'LIKE', `%${q}%`)
  39. builderSub.orWhere('description', 'LIKE', `%${q}%`)
  40. }
  41. })
  42. })
  43. .limit(WIKI.config.search.maxHits)
  44. return {
  45. results,
  46. suggestions: [],
  47. totalHits: results.length
  48. }
  49. },
  50. /**
  51. * CREATE
  52. *
  53. * @param {Object} page Page to create
  54. */
  55. async created(page) {
  56. // not used
  57. },
  58. /**
  59. * UPDATE
  60. *
  61. * @param {Object} page Page to update
  62. */
  63. async updated(page) {
  64. // not used
  65. },
  66. /**
  67. * DELETE
  68. *
  69. * @param {Object} page Page to delete
  70. */
  71. async deleted(page) {
  72. // not used
  73. },
  74. /**
  75. * RENAME
  76. *
  77. * @param {Object} page Page to rename
  78. */
  79. async renamed(page) {
  80. // not used
  81. },
  82. /**
  83. * REBUILD INDEX
  84. */
  85. async rebuild() {
  86. // not used
  87. }
  88. }