Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit 3a01c82

Browse files
author
sachin-maheshwari
authored
Merge pull request #101 from yoution/feature/CQRS-Standards
fix: sendtopic after error happened
2 parents e85d2d3 + 144a8c1 commit 3a01c82

File tree

1 file changed

+47
-35
lines changed

1 file changed

+47
-35
lines changed

src/modules/user/service.js

Lines changed: 47 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,21 @@ const uniqueFields = [['handle']]
3232
async function create (entity, auth) {
3333
await dbHelper.makeSureUnique(User, entity, uniqueFields)
3434

35-
const result = await sequelize.transaction(async (t) => {
36-
const userEntity = await dbHelper.create(User, entity, auth, t)
37-
await serviceHelper.createRecordInEs(resource, userEntity.dataValues, true)
38-
try {
39-
await helper.postEvent(config.UBAHN_CREATE_USER_TOPIC, userEntity.dataValues)
40-
} catch (err) {
41-
logger.logFullError(err)
35+
let payload
36+
try {
37+
const result = await sequelize.transaction(async (t) => {
38+
const userEntity = await dbHelper.create(User, entity, auth, t)
39+
payload = userEntity.dataValues
40+
await serviceHelper.createRecordInEs(resource, userEntity.dataValues, true)
41+
return userEntity
42+
})
43+
return result
44+
} catch (e) {
45+
if (payload) {
46+
helper.postEvent(config.UBAHN_CREATE_USER_TOPIC, payload)
4247
}
43-
})
44-
45-
return result
48+
throw e
49+
}
4650
}
4751

4852
create.schema = {
@@ -65,19 +69,24 @@ create.schema = {
6569
async function patch (id, entity, auth, params) {
6670
await dbHelper.makeSureUnique(User, entity, uniqueFields)
6771

68-
const result = await sequelize.transaction(async (t) => {
69-
const newEntity = await dbHelper.update(User, id, entity, auth, null, t)
70-
await serviceHelper.patchRecordInEs(resource, newEntity.dataValues, true)
72+
let payload
73+
try {
74+
const result = await sequelize.transaction(async (t) => {
75+
const newEntity = await dbHelper.update(User, id, entity, auth, null, t)
76+
payload = newEntity.dataValues
7177

72-
try {
73-
await helper.postEvent(config.UBAHN_UPDATE_USER_TOPIC, newEntity.dataValues)
74-
} catch (err) {
75-
logger.logFullError(err)
76-
}
77-
return newEntity
78-
})
78+
await serviceHelper.patchRecordInEs(resource, newEntity.dataValues, true)
79+
80+
return newEntity
81+
})
7982

80-
return result
83+
return result
84+
} catch (e) {
85+
if (payload) {
86+
helper.postEvent(config.UBAHN_UPDATE_USER_TOPIC, payload)
87+
}
88+
throw e
89+
}
8190
}
8291

8392
patch.schema = {
@@ -180,20 +189,23 @@ async function remove (id, auth, params) {
180189
* @param params the path params
181190
*/
182191
async function beginCascadeDelete (id, params) {
183-
await sequelize.transaction(async (t) => {
184-
await serviceHelper.deleteChild(Achievement, id, ['userId', 'achievementsProviderId'], 'Achievement', t)
185-
await serviceHelper.deleteChild(ExternalProfile, id, ['userId', 'organizationId'], 'ExternalProfile', t)
186-
await serviceHelper.deleteChild(UserAttribute, id, ['userId', 'attributeId'], 'UserAttribute', t)
187-
await serviceHelper.deleteChild(UsersRole, id, ['userId', 'roleId'], 'UsersRole', t)
188-
await serviceHelper.deleteChild(UsersSkill, id, ['userId', 'skillId'], 'UsersSkill', t)
189-
await dbHelper.remove(User, id, null, t)
190-
await serviceHelper.deleteRecordFromEs(id, params, resource, true)
191-
try {
192-
await helper.postEvent(config.UBAHN_DELETE_USER_TOPIC, {id})
193-
} catch (err) {
194-
logger.logFullError(err)
195-
}
196-
})
192+
let payload = {id}
193+
try {
194+
await sequelize.transaction(async (t) => {
195+
await serviceHelper.deleteChild(Achievement, id, ['userId', 'achievementsProviderId'], 'Achievement', t)
196+
aa.bb
197+
await serviceHelper.deleteChild(ExternalProfile, id, ['userId', 'organizationId'], 'ExternalProfile', t)
198+
await serviceHelper.deleteChild(UserAttribute, id, ['userId', 'attributeId'], 'UserAttribute', t)
199+
await serviceHelper.deleteChild(UsersRole, id, ['userId', 'roleId'], 'UsersRole', t)
200+
await serviceHelper.deleteChild(UsersSkill, id, ['userId', 'skillId'], 'UsersSkill', t)
201+
await dbHelper.remove(User, id, null, t)
202+
await serviceHelper.deleteRecordFromEs(id, params, resource, true)
203+
})
204+
205+
} catch (e) {
206+
helper.postEvent(config.UBAHN_DELETE_USER_TOPIC, payload)
207+
throw e
208+
}
197209
}
198210

199211
module.exports = {

0 commit comments

Comments
 (0)