@cavai/adonis-queue
Version:
Basic AdonisJS queue provider
52 lines (51 loc) • 1.35 kB
JavaScript
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,
};
}