12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /* global WIKI */
- module.exports = {
- activate() {
- // not used
- },
- deactivate() {
- // not used
- },
- /**
- * INIT
- */
- init() {
- // not used
- },
- /**
- * QUERY
- *
- * @param {String} q Query
- * @param {Object} opts Additional options
- */
- async query(q, opts) {
- const results = await WIKI.models.pages.query()
- .column('pages.id', 'title', 'description', 'path', 'localeCode as locale')
- .withGraphJoined('tags') // Adding page tags since they can be used to check resource access permissions
- .modifyGraph('tags', builder => {
- builder.select('tag')
- })
- .where(builder => {
- builder.where('isPublished', true)
- if (opts.locale) {
- builder.andWhere('localeCode', opts.locale)
- }
- if (opts.path) {
- builder.andWhere('path', 'like', `${opts.path}%`)
- }
- builder.andWhere(builderSub => {
- if (WIKI.config.db.type === 'postgres') {
- builderSub.where('title', 'ILIKE', `%${q}%`)
- builderSub.orWhere('description', 'ILIKE', `%${q}%`)
- builderSub.orWhere('path', 'ILIKE', `%${q.toLowerCase()}%`)
- } else {
- builderSub.where('title', 'LIKE', `%${q}%`)
- builderSub.orWhere('description', 'LIKE', `%${q}%`)
- builderSub.orWhere('path', 'LIKE', `%${q.toLowerCase()}%`)
- }
- })
- })
- .limit(WIKI.config.search.maxHits)
- return {
- results,
- suggestions: [],
- totalHits: results.length
- }
- },
- /**
- * CREATE
- *
- * @param {Object} page Page to create
- */
- async created(page) {
- // not used
- },
- /**
- * UPDATE
- *
- * @param {Object} page Page to update
- */
- async updated(page) {
- // not used
- },
- /**
- * DELETE
- *
- * @param {Object} page Page to delete
- */
- async deleted(page) {
- // not used
- },
- /**
- * RENAME
- *
- * @param {Object} page Page to rename
- */
- async renamed(page) {
- // not used
- },
- /**
- * REBUILD INDEX
- */
- async rebuild() {
- // not used
- }
- }
|