import { ThreadWorker } from 'poolifier' import { kebabCase } from 'lodash-es' import path from 'node:path' import configSvc from './core/config.mjs' import logger from './core/logger.mjs' import db from './core/db.mjs' // ---------------------------------------- // Init Minimal Core // ---------------------------------------- const WIKI = { IS_DEBUG: process.env.NODE_ENV === 'development', ROOTPATH: process.cwd(), INSTANCE_ID: 'worker', SERVERPATH: path.join(process.cwd(), 'server'), configSvc, ensureDb: async () => { if (WIKI.db) { return true } WIKI.db = await db.init(true) try { await WIKI.configSvc.loadFromDb() await WIKI.configSvc.applyFlags() } catch (err) { WIKI.logger.error('Database Initialization Error: ' + err.message) if (WIKI.IS_DEBUG) { WIKI.logger.error(err) } process.exit(1) } } } global.WIKI = WIKI await WIKI.configSvc.init(true) // ---------------------------------------- // Init Logger // ---------------------------------------- WIKI.logger = logger.init() // ---------------------------------------- // Execute Task // ---------------------------------------- export default new ThreadWorker(async (job) => { WIKI.INSTANCE_ID = job.INSTANCE_ID const task = (await import(`./tasks/workers/${kebabCase(job.task)}.mjs`)).task await task(job) return true }, { async: true })