engine.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. builder.andWhere(builderSub => {
  33. if (WIKI.config.db.type === 'postgres') {
  34. builderSub.where('title', 'ILIKE', `%${q}%`)
  35. builderSub.orWhere('description', 'ILIKE', `%${q}%`)
  36. } else {
  37. builderSub.where('title', 'LIKE', `%${q}%`)
  38. builderSub.orWhere('description', 'LIKE', `%${q}%`)
  39. }
  40. })
  41. })
  42. .limit(WIKI.config.search.maxHits)
  43. return {
  44. results,
  45. suggestions: [],
  46. totalHits: results.length
  47. }
  48. },
  49. /**
  50. * CREATE
  51. *
  52. * @param {Object} page Page to create
  53. */
  54. async created(page) {
  55. // not used
  56. },
  57. /**
  58. * UPDATE
  59. *
  60. * @param {Object} page Page to update
  61. */
  62. async updated(page) {
  63. // not used
  64. },
  65. /**
  66. * DELETE
  67. *
  68. * @param {Object} page Page to delete
  69. */
  70. async deleted(page) {
  71. // not used
  72. },
  73. /**
  74. * RENAME
  75. *
  76. * @param {Object} page Page to rename
  77. */
  78. async renamed(page) {
  79. // not used
  80. },
  81. /**
  82. * REBUILD INDEX
  83. */
  84. async rebuild() {
  85. // not used
  86. }
  87. }