diff --git a/packages/backend/src/queues/action.js b/packages/backend/src/queues/action.js index 3c413173..dbb0226a 100644 --- a/packages/backend/src/queues/action.js +++ b/packages/backend/src/queues/action.js @@ -1,27 +1,4 @@ -import process from 'process'; -import { Queue } from 'bullmq'; -import redisConfig from '../config/redis.js'; -import logger from '../helpers/logger.js'; - -const CONNECTION_REFUSED = 'ECONNREFUSED'; - -const redisConnection = { - connection: redisConfig, -}; - -const actionQueue = new Queue('action', redisConnection); - -actionQueue.on('error', (error) => { - if (error.code === CONNECTION_REFUSED) { - logger.error( - 'Make sure you have installed Redis and it is running.', - error - ); - - process.exit(); - } - - logger.error('Error happened in action queue!', error); -}); +import { generateQueue } from './queue.js'; +const actionQueue = generateQueue('action'); export default actionQueue; diff --git a/packages/backend/src/queues/delete-user.ee.js b/packages/backend/src/queues/delete-user.ee.js index 11794005..8e939523 100644 --- a/packages/backend/src/queues/delete-user.ee.js +++ b/packages/backend/src/queues/delete-user.ee.js @@ -1,27 +1,4 @@ -import process from 'process'; -import { Queue } from 'bullmq'; -import redisConfig from '../config/redis.js'; -import logger from '../helpers/logger.js'; - -const CONNECTION_REFUSED = 'ECONNREFUSED'; - -const redisConnection = { - connection: redisConfig, -}; - -const deleteUserQueue = new Queue('delete-user', redisConnection); - -deleteUserQueue.on('error', (error) => { - if (error.code === CONNECTION_REFUSED) { - logger.error( - 'Make sure you have installed Redis and it is running.', - error - ); - - process.exit(); - } - - logger.error('Error happened in delete user queue!', error); -}); +import { generateQueue } from './queue.js'; +const deleteUserQueue = generateQueue('delete-user'); export default deleteUserQueue; diff --git a/packages/backend/src/queues/email.js b/packages/backend/src/queues/email.js index 5755f7c2..31e55bd5 100644 --- a/packages/backend/src/queues/email.js +++ b/packages/backend/src/queues/email.js @@ -1,27 +1,4 @@ -import process from 'process'; -import { Queue } from 'bullmq'; -import redisConfig from '../config/redis.js'; -import logger from '../helpers/logger.js'; - -const CONNECTION_REFUSED = 'ECONNREFUSED'; - -const redisConnection = { - connection: redisConfig, -}; - -const emailQueue = new Queue('email', redisConnection); - -emailQueue.on('error', (error) => { - if (error.code === CONNECTION_REFUSED) { - logger.error( - 'Make sure you have installed Redis and it is running.', - error - ); - - process.exit(); - } - - logger.error('Error happened in email queue!', error); -}); +import { generateQueue } from './queue.js'; +const emailQueue = generateQueue('email'); export default emailQueue; diff --git a/packages/backend/src/queues/flow.js b/packages/backend/src/queues/flow.js index 48de083a..b9d335fe 100644 --- a/packages/backend/src/queues/flow.js +++ b/packages/backend/src/queues/flow.js @@ -1,27 +1,4 @@ -import process from 'process'; -import { Queue } from 'bullmq'; -import redisConfig from '../config/redis.js'; -import logger from '../helpers/logger.js'; - -const CONNECTION_REFUSED = 'ECONNREFUSED'; - -const redisConnection = { - connection: redisConfig, -}; - -const flowQueue = new Queue('flow', redisConnection); - -flowQueue.on('error', (error) => { - if (error.code === CONNECTION_REFUSED) { - logger.error( - 'Make sure you have installed Redis and it is running.', - error - ); - - process.exit(); - } - - logger.error('Error happened in flow queue!', error); -}); +import { generateQueue } from './queue.js'; +const flowQueue = generateQueue('flow'); export default flowQueue; diff --git a/packages/backend/src/queues/queue.js b/packages/backend/src/queues/queue.js new file mode 100644 index 00000000..f6a5263e --- /dev/null +++ b/packages/backend/src/queues/queue.js @@ -0,0 +1,44 @@ +import process from 'process'; +import { Queue } from 'bullmq'; +import redisConfig from '../config/redis.js'; +import logger from '../helpers/logger.js'; + +const CONNECTION_REFUSED = 'ECONNREFUSED'; + +const redisConnection = { + connection: redisConfig, +}; + +export const generateQueue = (queueName, options) => { + const queue = new Queue(queueName, redisConnection); + + queue.on('error', (error) => queueOnError(error, queueName)); + + if (options?.runDaily) addScheduler(queueName, queue); + + return queue; +}; + +const queueOnError = (error, queueName) => { + if (error.code === CONNECTION_REFUSED) { + const errorMessage = + 'Make sure you have installed Redis and it is running.'; + + logger.error(errorMessage, error); + + process.exit(); + } + + logger.error(`Error happened in ${queueName} queue!`, error); +}; + +const addScheduler = (queueName, queue) => { + const everydayAtOneOclock = '0 1 * * *'; + + queue.add(queueName, null, { + jobId: queueName, + repeat: { + pattern: everydayAtOneOclock, + }, + }); +}; diff --git a/packages/backend/src/queues/remove-cancelled-subscriptions.ee.js b/packages/backend/src/queues/remove-cancelled-subscriptions.ee.js index f5f574a8..bb439722 100644 --- a/packages/backend/src/queues/remove-cancelled-subscriptions.ee.js +++ b/packages/backend/src/queues/remove-cancelled-subscriptions.ee.js @@ -1,40 +1,8 @@ -import process from 'process'; -import { Queue } from 'bullmq'; -import redisConfig from '../config/redis.js'; -import logger from '../helpers/logger.js'; +import { generateQueue } from './queue.js'; -const CONNECTION_REFUSED = 'ECONNREFUSED'; - -const redisConnection = { - connection: redisConfig, -}; - -const removeCancelledSubscriptionsQueue = new Queue( +const removeCancelledSubscriptionsQueue = generateQueue( 'remove-cancelled-subscriptions', - redisConnection + { runDaily: true } ); -removeCancelledSubscriptionsQueue.on('error', (error) => { - if (error.code === CONNECTION_REFUSED) { - logger.error( - 'Make sure you have installed Redis and it is running.', - error - ); - - process.exit(); - } - - logger.error( - 'Error happened in remove cancelled subscriptions queue!', - error - ); -}); - -removeCancelledSubscriptionsQueue.add('remove-cancelled-subscriptions', null, { - jobId: 'remove-cancelled-subscriptions', - repeat: { - pattern: '0 1 * * *', - }, -}); - export default removeCancelledSubscriptionsQueue; diff --git a/packages/backend/src/queues/trigger.js b/packages/backend/src/queues/trigger.js index bc0f9b46..e2134e13 100644 --- a/packages/backend/src/queues/trigger.js +++ b/packages/backend/src/queues/trigger.js @@ -1,27 +1,4 @@ -import process from 'process'; -import { Queue } from 'bullmq'; -import redisConfig from '../config/redis.js'; -import logger from '../helpers/logger.js'; - -const CONNECTION_REFUSED = 'ECONNREFUSED'; - -const redisConnection = { - connection: redisConfig, -}; - -const triggerQueue = new Queue('trigger', redisConnection); - -triggerQueue.on('error', (error) => { - if (error.code === CONNECTION_REFUSED) { - logger.error( - 'Make sure you have installed Redis and it is running.', - error - ); - - process.exit(); - } - - logger.error('Error happened in trigger queue!', error); -}); +import { generateQueue } from './queue.js'; +const triggerQueue = generateQueue('trigger'); export default triggerQueue;