Skip to content

Commit 33e05b5

Browse files
author
vikasrohit
authored
Merge pull request #438 from topcoder-platform/hotfix/create-phase-topics-on-project-create
[HOTFIX] [DEV] Create phase topics on project create
2 parents 9ed6727 + e24e4d3 commit 33e05b5

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/events/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
import { EVENT, CONNECT_NOTIFICATION_EVENT } from '../constants';
33
import { projectCreatedHandler,
4+
projectCreatedHandlerForPhases,
45
projectUpdatedKafkaHandler } from './projects';
56
import { projectPhaseAddedHandler, projectPhaseRemovedHandler,
67
projectPhaseUpdatedHandler } from './projectPhases';
@@ -39,7 +40,7 @@ const voidRabbitHandler = (logger, msg, channel) => {
3940
// we should completely remove the handlers for this events.
4041
export const rabbitHandlers = {
4142
'project.initial': projectCreatedHandler, // is only used `seedElasticsearchIndex.js` and can be removed
42-
[EVENT.ROUTING_KEY.PROJECT_DRAFT_CREATED]: voidRabbitHandler, // DISABLED
43+
[EVENT.ROUTING_KEY.PROJECT_DRAFT_CREATED]: projectCreatedHandlerForPhases, // we have to call it, because it triggers topics creating for phases
4344
[EVENT.ROUTING_KEY.PROJECT_UPDATED]: voidRabbitHandler, // DISABLED
4445
[EVENT.ROUTING_KEY.PROJECT_DELETED]: voidRabbitHandler, // DISABLED
4546
[EVENT.ROUTING_KEY.PROJECT_MEMBER_ADDED]: voidRabbitHandler, // DISABLED

src/events/projects/index.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,31 @@ const projectCreatedHandler = Promise.coroutine(function* (logger, msg, channel)
7878
}
7979
});
8080

81+
/**
82+
* Handler for project creation event
83+
*
84+
* we call this handle only for the sake of creating topics for the phases
85+
*
86+
* @param {Object} logger logger to log along with trace id
87+
* @param {Object} msg event payload
88+
* @param {Object} channel channel to ack, nack
89+
* @returns {undefined}
90+
*/
91+
const projectCreatedHandlerForPhases = Promise.coroutine(function* (logger, msg, channel) { // eslint-disable-line func-names
92+
const project = JSON.parse(msg.content.toString());
93+
try {
94+
if (project.phases && project.phases.length > 0) {
95+
logger.debug('Phases found for the project, trying to create topics for each phase.');
96+
const topicPromises = _.map(project.phases, phase => createPhaseTopic(logger, phase));
97+
yield Promise.all(topicPromises);
98+
}
99+
channel.ack(msg);
100+
} catch (error) {
101+
logger.error(`Error processing event (projectId: ${project.id})`, error);
102+
channel.nack(msg, false, !msg.fields.redelivered);
103+
}
104+
});
105+
81106
/**
82107
* Handler for project updated event
83108
* @param {Object} logger logger to log along with trace id
@@ -190,6 +215,7 @@ async function projectUpdatedKafkaHandler(app, topic, payload) {
190215

191216
module.exports = {
192217
projectCreatedHandler,
218+
projectCreatedHandlerForPhases,
193219
projectUpdatedHandler,
194220
projectDeletedHandler,
195221
projectUpdatedKafkaHandler,

0 commit comments

Comments
 (0)