Skip to content

Commit cc751ff

Browse files
committed
kafka event for tenant
1 parent 11b1cf2 commit cc751ff

File tree

5 files changed

+88
-5
lines changed

5 files changed

+88
-5
lines changed

src/.env.sample

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,10 @@ EVENT_ENABLE_KAFKA_PUSH=true
180180
#Set Default Phone code
181181
DEFAULT_PHONE_CODE="+91"
182182
# kafka topic for health check
183-
KAFKA_HEALTH_CHECK_TOPIC='user-health-check-topic-check'
183+
KAFKA_HEALTH_CHECK_TOPIC='user-health-check-topic-check'
184+
#Enable / disable tenant create event
185+
EVENT_ENABLE_TENANT_EVENTS=true
186+
#Event Kafka topic for tenant create
187+
EVENT_TENANT_KAFKA_TOPIC='dev.tenantCreate'
188+
#Event API for tenant create , can be comma separated
189+
EVENT_TENANT_LISTENER_API='http://interface:3567/scp/v1/tenant/add'

src/envVariables.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,28 @@ let enviromentVariables = {
415415
optional: true,
416416
default: 'user-health-check-topic-check',
417417
},
418+
EVENT_ENABLE_TENANT_EVENTS: {
419+
message: 'Key to toggle tenant creation kafka event',
420+
optional: true,
421+
},
422+
EVENT_TENANT_KAFKA_TOPIC: {
423+
message: 'Kafka topic for Tenant creation Event',
424+
optional: true,
425+
requiredIf: {
426+
key: 'EVENT_ENABLE_TENANT_EVENTS',
427+
operator: 'EQUALS',
428+
value: 'true',
429+
},
430+
},
431+
EVENT_TENANT_LISTENER_API: {
432+
message: 'URL for Tenant creation Event',
433+
optional: true,
434+
requiredIf: {
435+
key: 'EVENT_ENABLE_TENANT_EVENTS',
436+
operator: 'EQUALS',
437+
value: 'true',
438+
},
439+
},
418440
}
419441
let success = true
420442

src/generics/kafka-communication.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ const pushUserEventsToKafka = async (message) => {
2525
}
2626
}
2727

28+
const pushTenantEventsToKafka = async (message) => {
29+
try {
30+
const payload = { topic: process.env.EVENT_TENANT_KAFKA_TOPIC, messages: [{ value: JSON.stringify(message) }] }
31+
return await pushPayloadToKafka(payload)
32+
} catch (error) {
33+
console.log(error)
34+
return error
35+
}
36+
}
37+
2838
const pushPayloadToKafka = async (payload) => {
2939
try {
3040
let response = await kafkaProducer.send(payload)
@@ -51,4 +61,5 @@ module.exports = {
5161
pushEmailToKafka,
5262
clearInternalCache,
5363
pushUserEventsToKafka,
64+
pushTenantEventsToKafka,
5465
}

src/helpers/eventBroadcasterMain.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ const getEndpoints = (eventGroup) => {
1111
case 'userEvents':
1212
if (process.env.EVENT_USER_LISTENER_API)
1313
return process.env.EVENT_USER_LISTENER_API.split(',').filter((url) => url.trim())
14+
case 'tenantEvents':
15+
if (process.env.EVENT_TENANT_LISTENER_API)
16+
return process.env.EVENT_TENANT_LISTENER_API.split(',').filter((url) => url.trim())
17+
1418
default:
1519
return []
1620
}
@@ -23,9 +27,10 @@ const isEventEnabled = (eventGroup) => {
2327

2428
case 'userEvents':
2529
return process.env.EVENT_ENABLE_USER_EVENTS !== 'false'
26-
2730
case 'userEvents-kafka':
2831
return process.env.EVENT_ENABLE_KAFKA_PUSH !== 'false'
32+
case 'tenantEvents':
33+
return process.env.EVENT_ENABLE_TENANT_EVENTS !== 'false'
2934
default:
3035
return true
3136
}
@@ -56,8 +61,21 @@ exports.eventBroadcasterKafka = async (eventGroup, { requestBody }) => {
5661
if (!requestBody) throw new Error('Kafka Event Body Generation Failed')
5762
if (!isEventEnabled(`${eventGroup}-kafka`))
5863
throw new Error(`Kafka Events Not Enabled For The Group "${eventGroup}"`)
59-
60-
kafkaCommunication.pushUserEventsToKafka(requestBody)
64+
//push to kafka based on eventGroup
65+
switch (eventGroup) {
66+
case 'organizationEvents':
67+
kafkaCommunication.pushOrganizationEventsToKafka(requestBody)
68+
break
69+
case 'userEvents':
70+
kafkaCommunication.pushUserEventsToKafka(requestBody)
71+
break
72+
case 'tenantEvents':
73+
kafkaCommunication.pushTenantEventsToKafka(requestBody)
74+
break
75+
default:
76+
console.log('No Kafka Event Group Found')
77+
break
78+
}
6179
} catch (err) {
6280
console.log(err)
6381
}

src/services/tenant.js

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ const utils = require('@generics/utils')
3030
const _ = require('lodash')
3131
const responses = require('@helpers/responses')
3232
const { Op } = require('sequelize')
33-
33+
const { broadcastUserEvent } = require('@helpers/eventBroadcasterMain')
34+
const UserTransformDTO = require('@dtos/userDTO')
3435
module.exports = class tenantHelper {
3536
/**
3637
* Create Tenant
@@ -371,6 +372,8 @@ module.exports = class tenantHelper {
371372
})
372373
})
373374
}
375+
tenantCreateResponse.orgId = defaultOrgCreateResponse?.result?.id
376+
tenantCreateResponse.orgCode = defaultOrgCreateResponse?.result?.code
374377
// ******* adding default user roles to Default Org CODE ENDS HERE *******
375378
} catch (error) {
376379
if (rollbackStack.size() > 0) await rollbackStack.execute()
@@ -381,6 +384,29 @@ module.exports = class tenantHelper {
381384
})
382385
}
383386

387+
//event Body for tenant create
388+
const eventBody = UserTransformDTO.eventBodyDTO({
389+
entity: 'tenant',
390+
eventType: 'create',
391+
entityId: tenantCreateResponse.code,
392+
args: {
393+
created_by: tenantCreateResponse.created_by,
394+
name: tenantCreateResponse.name,
395+
code: tenantCreateResponse.code,
396+
created_at: tenantCreateResponse?.created_at || new Date(),
397+
updated_at: tenantCreateResponse?.updated_at || new Date(),
398+
...tenantCreateResponse.meta,
399+
status: tenantCreateResponse?.status || common.ACTIVE_STATUS,
400+
deleted: false,
401+
org_id: tenantCreateResponse.orgId,
402+
org_code: tenantCreateResponse.orgCode,
403+
description: tenantCreateResponse.description,
404+
logo: tenantCreateResponse.logo,
405+
},
406+
})
407+
408+
broadcastUserEvent('tenantEvents', { requestBody: eventBody, isInternal: true })
409+
384410
return responses.successResponse({
385411
statusCode: httpStatusCode.accepted,
386412
message: 'TENANT_CREATED_SUCCESSFULLY',

0 commit comments

Comments
 (0)