Skip to content

Commit 28d96ba

Browse files
committed
Fix up raising bus messages
1 parent 7b9d4e8 commit 28d96ba

File tree

4 files changed

+80
-20
lines changed

4 files changed

+80
-20
lines changed

app-constants.js

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,33 +42,61 @@ const Topics = {
4242
ChallengeCreated: "challenge.notification.create",
4343
ChallengeUpdated: "challenge.notification.update",
4444
ChallengeDeleted: "challenge.notification.delete",
45-
ChallengeTypeCreated: "test.new.bus.events", // 'challenge.action.type.created',
46-
ChallengeTypeUpdated: "test.new.bus.events", // 'challenge.action.type.updated',
47-
ChallengeTypeDeleted: "test.new.bus.events", // 'challenge.action.type.deleted',
48-
ChallengeTrackCreated: "test.new.bus.events", // 'challenge.action.track.created',
49-
ChallengeTrackUpdated: "test.new.bus.events", // 'challenge.action.track.updated',
50-
ChallengeTrackDeleted: "test.new.bus.events", // 'challenge.action.track.deleted',
51-
PhaseCreated: "test.new.bus.events", // 'phase.action.created',
52-
PhaseUpdated: "test.new.bus.events", // 'phase.action.updated',
53-
PhaseDeleted: "test.new.bus.events", // 'phase.action.deleted',
54-
TimelineTemplateCreated: "test.new.bus.events", // 'challenge.action.timeline.template.created',
55-
TimelineTemplateUpdated: "test.new.bus.events", // 'challenge.action.timeline.template.updated',
56-
TimelineTemplateDeleted: "test.new.bus.events", // 'challenge.action.timeline.template.deleted',
57-
ChallengeTypeTimelineTemplateCreated: "test.new.bus.events", // 'challenge.action.type.timeline.template.created',
58-
ChallengeTypeTimelineTemplateUpdated: "test.new.bus.events", // 'challenge.action.type.timeline.template.updated',
59-
ChallengeTypeTimelineTemplateDeleted: "test.new.bus.events", // 'challenge.action.type.timeline.template.deleted'
60-
ChallengeAttachmentCreated: "test.new.bus.events", // 'challenge.action.attachment.created',
61-
ChallengeAttachmentUpdated: "test.new.bus.events", // 'challenge.action.attachment.updated',
62-
ChallengeAttachmentDeleted: "test.new.bus.events", // 'challenge.action.attachment.deleted',
45+
ChallengeTypeCreated: "challenge.action.type.created",
46+
ChallengeTypeUpdated: "challenge.action.type.updated",
47+
ChallengeTypeDeleted: "challenge.action.type.deleted",
48+
ChallengeTrackCreated: "challenge.action.track.created",
49+
ChallengeTrackUpdated: "challenge.action.track.updated",
50+
ChallengeTrackDeleted: "challenge.action.track.deleted",
51+
PhaseCreated: "phase.action.created",
52+
PhaseUpdated: "phase.action.updated",
53+
PhaseDeleted: "phase.action.deleted",
54+
TimelineTemplateCreated: "challenge.action.timeline.template.created",
55+
TimelineTemplateUpdated: "challenge.action.timeline.template.updated",
56+
TimelineTemplateDeleted: "challenge.action.timeline.template.deleted",
57+
ChallengeTypeTimelineTemplateCreated: "challenge.action.type.timeline.template.created",
58+
ChallengeTypeTimelineTemplateUpdated: "challenge.action.type.timeline.template.updated",
59+
ChallengeTypeTimelineTemplateDeleted: "challenge.action.type.timeline.template.deleted",
60+
ChallengeAttachmentCreated: "challenge.action.attachment.created",
61+
ChallengeAttachmentUpdated: "challenge.action.attachment.updated",
62+
ChallengeAttachmentDeleted: "challenge.action.attachment.deleted",
6363
ChallengeTimelineTemplateCreated: "challenge.action.challenge.timeline.created",
6464
ChallengeTimelineTemplateUpdated: "challenge.action.challenge.timeline.updated",
6565
ChallengeTimelineTemplateDeleted: "challenge.action.challenge.timeline.deleted",
66-
ChallengePhaseUpdated: "test.new.bus.events", // 'challenge.action.phase.updated',
67-
ChallengePhaseDeleted: "test.new.bus.events", // 'challenge.action.phase.deleted',
66+
ChallengePhaseUpdated: "challenge.action.phase.updated",
67+
ChallengePhaseDeleted: "challenge.action.phase.deleted",
6868
// Self Service topics
6969
Notifications: "notifications.action.create",
7070
};
7171

72+
// Kafka topics temporarily disabled. We probably don't need all these right now, and this just cuts
73+
// down on overhead.
74+
const DisabledTopics = [
75+
Topics.ChallengeTypeCreated,
76+
Topics.ChallengeTypeUpdated,
77+
Topics.ChallengeTypeDeleted,
78+
Topics.ChallengeTrackCreated,
79+
Topics.ChallengeTrackUpdated,
80+
Topics.ChallengeTrackDeleted,
81+
Topics.PhaseCreated,
82+
Topics.PhaseUpdated,
83+
Topics.PhaseDeleted,
84+
Topics.TimelineTemplateCreated,
85+
Topics.TimelineTemplateUpdated,
86+
Topics.TimelineTemplateDeleted,
87+
Topics.ChallengeTypeTimelineTemplateCreated,
88+
Topics.ChallengeTypeTimelineTemplateUpdated,
89+
Topics.ChallengeTypeTimelineTemplateDeleted,
90+
Topics.ChallengeAttachmentCreated,
91+
Topics.ChallengeAttachmentUpdated,
92+
Topics.ChallengeAttachmentDeleted,
93+
Topics.ChallengeTimelineTemplateCreated,
94+
Topics.ChallengeTimelineTemplateUpdated,
95+
Topics.ChallengeTimelineTemplateDeleted,
96+
Topics.ChallengePhaseUpdated,
97+
Topics.ChallengePhaseDeleted,
98+
];
99+
72100
const challengeTextSortField = {
73101
Name: "name",
74102
TypeId: "typeId",
@@ -128,6 +156,7 @@ module.exports = {
128156
EVENT_ORIGINATOR,
129157
EVENT_MIME_TYPE,
130158
Topics,
159+
DisabledTopics,
131160
challengeTextSortField,
132161
SelfServiceNotificationTypes,
133162
SelfServiceNotificationSettings,

src/common/helper.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ const projectHelper = require("./project-helper");
1919
const m2mHelper = require("./m2m-helper");
2020
const { hasAdminRole } = require("./role-helper");
2121

22+
const DISABLED_TOPICS = new Set(constants.DisabledTopics || []);
23+
2224
// Bus API Client
2325
let busApiClient;
2426

@@ -919,6 +921,10 @@ function getBusApiClient() {
919921
* @param {Object} options the extra options to the message
920922
*/
921923
async function postBusEvent(topic, payload, options = {}) {
924+
if (DISABLED_TOPICS.has(topic)) {
925+
logger.debug(`helper.postBusEvent: skipping disabled topic ${topic}`);
926+
return;
927+
}
922928
const client = getBusApiClient();
923929
const message = {
924930
topic,

src/services/ChallengePhaseService.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const logger = require("../common/logger");
1111
const errors = require("../common/errors");
1212
const constants = require("../../app-constants");
1313
const { getReviewClient } = require("../common/review-prisma");
14+
const { indexChallengeAndPostToKafka } = require("./ChallengeService");
1415

1516
const { getClient } = require("../common/prisma");
1617
const prisma = getClient();
@@ -68,6 +69,27 @@ async function checkChallengeExists(challengeId) {
6869
}
6970
}
7071

72+
/**
73+
* Publish a challenge update event with the latest challenge payload.
74+
* @param {String} challengeId the challenge id
75+
*/
76+
async function postChallengeUpdatedNotification(challengeId) {
77+
try {
78+
const challenge = await prisma.challenge.findUnique({ where: { id: challengeId } });
79+
if (!challenge) {
80+
logger.error(`Failed to publish challenge update event: challenge ${challengeId} not found`);
81+
return;
82+
}
83+
await indexChallengeAndPostToKafka(challenge);
84+
} catch (error) {
85+
logger.error(
86+
`Failed to publish challenge update event for challenge ${challengeId}: ${error.message}`,
87+
error
88+
);
89+
throw error;
90+
}
91+
}
92+
7193
/**
7294
* Get all phase information for that challenge
7395
* @param {String} challengeId the challenge id
@@ -273,6 +295,7 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data)
273295
constants.Topics.ChallengePhaseUpdated,
274296
_.assignIn({ id: result.id }, data)
275297
);
298+
await postChallengeUpdatedNotification(challengeId);
276299
return _.omit(result, constants.auditFields);
277300
}
278301

@@ -352,6 +375,7 @@ async function deleteChallengePhase(currentUser, challengeId, id) {
352375
const ret = _.omit(result, constants.auditFields);
353376
// post bus event
354377
await helper.postBusEvent(constants.Topics.ChallengePhaseDeleted, ret);
378+
await postChallengeUpdatedNotification(challengeId);
355379
return ret;
356380
}
357381

src/services/ChallengeService.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3387,6 +3387,7 @@ module.exports = {
33873387
advancePhase,
33883388
getDefaultReviewers,
33893389
setDefaultReviewers,
3390+
indexChallengeAndPostToKafka,
33903391
};
33913392

33923393
logger.buildService(module.exports);

0 commit comments

Comments
 (0)