UNPKG

@cavai/adonis-queue

Version:
52 lines (51 loc) 1.35 kB
import DriversCollection from './drivers_collection.js'; /** * Define config looks like this * * I will take this * { * default: 'somename', * queues: { * somename: { * driver: 'db', * table_name: 'sjkadakjs' * } * } * } * * And return this * { * default: 'somename', * queues: { * somename: () => new DatabaseDrive({ * table_name: 'sjdasjk', * }) * } * } */ export function defineConfig(config) { /** * Queues queues should always be provided */ if (!config.queues) { throw new Error('Missing "queues" property in queue config'); } /** * The default queue should be mentioned in the queues */ if (config.default && !config.queues[config.default]) { throw new Error(`Missing "queues.${String(config.default)}" in queue config. It is referenced by the "default" property`); } /** * Converting queues config to a collection that queue manager can use */ const managerQueues = Object.keys(config.queues).reduce((result, disk) => { const queueConfig = config.queues[disk]; result[disk] = () => DriversCollection.create(queueConfig.driver, queueConfig); return result; }, {}); return { default: config.default, queues: managerQueues, }; }