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

Commit 5c1645c

Browse files
committed
fix: sendtopic after error happened
1 parent 34b6cbd commit 5c1645c

File tree

1 file changed

+46
-35
lines changed

1 file changed

+46
-35
lines changed

src/modules/user/service.js

Lines changed: 46 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,20 @@ 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+
})
42+
return result
43+
} catch (e) {
44+
if (payload) {
45+
helper.postEvent(config.UBAHN_CREATE_USER_TOPIC, payload)
4246
}
43-
})
44-
45-
return result
47+
throw e
48+
}
4649
}
4750

4851
create.schema = {
@@ -65,19 +68,24 @@ create.schema = {
6568
async function patch (id, entity, auth, params) {
6669
await dbHelper.makeSureUnique(User, entity, uniqueFields)
6770

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)
71+
let payload
72+
try {
73+
const result = await sequelize.transaction(async (t) => {
74+
const newEntity = await dbHelper.update(User, id, entity, auth, null, t)
75+
payload = newEntity.dataValues
7176

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-
})
77+
await serviceHelper.patchRecordInEs(resource, newEntity.dataValues, true)
78+
79+
return newEntity
80+
})
7981

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

8391
patch.schema = {
@@ -180,20 +188,23 @@ async function remove (id, auth, params) {
180188
* @param params the path params
181189
*/
182190
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-
})
191+
let payload = {id}
192+
try {
193+
await sequelize.transaction(async (t) => {
194+
await serviceHelper.deleteChild(Achievement, id, ['userId', 'achievementsProviderId'], 'Achievement', t)
195+
aa.bb
196+
await serviceHelper.deleteChild(ExternalProfile, id, ['userId', 'organizationId'], 'ExternalProfile', t)
197+
await serviceHelper.deleteChild(UserAttribute, id, ['userId', 'attributeId'], 'UserAttribute', t)
198+
await serviceHelper.deleteChild(UsersRole, id, ['userId', 'roleId'], 'UsersRole', t)
199+
await serviceHelper.deleteChild(UsersSkill, id, ['userId', 'skillId'], 'UsersSkill', t)
200+
await dbHelper.remove(User, id, null, t)
201+
await serviceHelper.deleteRecordFromEs(id, params, resource, true)
202+
})
203+
204+
} catch (e) {
205+
helper.postEvent(config.UBAHN_DELETE_USER_TOPIC, payload)
206+
throw e
207+
}
197208
}
198209

199210
module.exports = {

0 commit comments

Comments
 (0)