1234567891011121314151617181920212223242526272829303132333435 |
- import { pipeline } from 'node:stream/promises'
- import { Transform } from 'node:stream'
- export async function task ({ payload }) {
- WIKI.logger.info('Rebuilding search index...')
- try {
- await WIKI.ensureDb()
- let idx = 0
- await pipeline(
- WIKI.db.knex.select('id', 'title', 'description', 'locale', 'render', 'password').from('pages').stream(),
- new Transform({
- objectMode: true,
- transform: async (page, enc, cb) => {
- idx++
- await WIKI.db.pages.updatePageSearchVector({ page })
- if (idx % 50 === 0) {
- WIKI.logger.info(`Rebuilding search index... (${idx} processed)`)
- }
- cb()
- }
- })
- )
- WIKI.logger.info('Refreshing autocomplete index...')
- await WIKI.db.pages.refreshAutocompleteIndex()
- WIKI.logger.info('Rebuilt search index: [ COMPLETED ]')
- } catch (err) {
- WIKI.logger.error('Rebuilding search index: [ FAILED ]')
- WIKI.logger.error(err.message)
- throw err
- }
- }
|