2
0

engine.js 1.8 KB

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