@cavai/adonis-queue
Version:
> Basic AdonisJS queue provider
62 lines (61 loc) • 1.74 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.defineConfig = void 0;
const DriversCollection_1 = __importDefault(require("./DriversCollection"));
/**
* Define config looks like this
*
* I will take this
* {
* default: 'somename',
* logLevel: 'info',
* queues: {
* somename: {
* driver: 'db',
* table_name: 'sjkadakjs'
* }
* }
* }
*
* And return this
* {
* default: 'somename',
* logLevel: 'info',
* queues: {
* somename: () => new DatabaseDrive({
* table_name: 'sjdasjk',
* })
* }
* }
*/
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_1.default.create(queueConfig.driver, queueConfig);
return result;
}, {});
return {
default: config.default,
logLevel: config.logLevel,
queues: managerQueues,
};
}
exports.defineConfig = defineConfig;