@@ -15,7 +15,7 @@ const helper = require('./src/common/helper')
15
15
* @param {boolean } isDelete if delete the skill
16
16
* @returns {Promise }
17
17
*/
18
- async function syncUserSkill ( userId , tagId , score , skillProviderId , isDelete ) {
18
+ async function syncUserSkill ( userId , tagId , score , skillProviderId , isDelete ) {
19
19
const name = await helper . getTagName ( tagId )
20
20
const skill = await helper . getUbahnResource ( 'skills' , { skillProviderId, name } )
21
21
const skillExist = await helper . checkUserSkillExist ( userId , skill . id )
@@ -33,38 +33,42 @@ async function syncUserSkill (userId, tagId, score, skillProviderId, isDelete) {
33
33
* @param {Object } event the event object
34
34
*/
35
35
module . exports . handle = async ( event ) => {
36
- console . log ( `Received event: ` , JSON . stringify ( event ) )
37
- const skillProvider = await helper . getUbahnResource ( 'skillsProviders' , { name : config . SKILL_PROVIDER_NAME } )
38
- for ( const record of event . Records ) {
39
- try {
40
- const handle = _ . get ( record , 'dynamodb.NewImage.userHandle.S' )
41
- const newSkills = JSON . parse ( _ . get ( record , 'dynamodb.NewImage.skills.S' , '{}' ) )
42
- const oldSkills = JSON . parse ( _ . get ( record , 'dynamodb.OldImage.skills.S' , '{}' ) )
43
- const createSkills = _ . omit ( newSkills , _ . keys ( oldSkills ) )
44
- const deleteSkills = _ . omit ( oldSkills , _ . keys ( newSkills ) )
45
- const updateSkills = _ . filter ( _ . pick ( newSkills , _ . keys ( oldSkills ) ) , ( v , k ) => oldSkills [ k ] . score !== v . score )
46
- if ( _ . isEmpty ( createSkills ) && _ . isEmpty ( deleteSkills ) && _ . isEmpty ( updateSkills ) ) {
47
- console . log ( `there are no skills to create, update or delete for user ${ handle } ` )
48
- continue
36
+ try {
37
+ console . log ( `Received event: ` , JSON . stringify ( event ) )
38
+ const skillProvider = await helper . getUbahnResource ( 'skillsProviders' , { name : config . SKILL_PROVIDER_NAME } )
39
+ for ( const record of event . Records ) {
40
+ try {
41
+ const handle = _ . get ( record , 'dynamodb.NewImage.userHandle.S' )
42
+ const newSkills = JSON . parse ( _ . get ( record , 'dynamodb.NewImage.skills.S' , '{}' ) )
43
+ const oldSkills = JSON . parse ( _ . get ( record , 'dynamodb.OldImage.skills.S' , '{}' ) )
44
+ const createSkills = _ . omit ( newSkills , _ . keys ( oldSkills ) )
45
+ const deleteSkills = _ . omit ( oldSkills , _ . keys ( newSkills ) )
46
+ const updateSkills = _ . filter ( _ . pick ( newSkills , _ . keys ( oldSkills ) ) , ( v , k ) => oldSkills [ k ] . score !== v . score )
47
+ if ( _ . isEmpty ( createSkills ) && _ . isEmpty ( deleteSkills ) && _ . isEmpty ( updateSkills ) ) {
48
+ console . log ( `there are no skills to create, update or delete for user ${ handle } ` )
49
+ continue
50
+ }
51
+ console . log ( 'Skills to create:' , JSON . stringify ( createSkills ) )
52
+ console . log ( 'Skills to update:' , JSON . stringify ( updateSkills ) )
53
+ console . log ( 'Skills to delete:' , JSON . stringify ( deleteSkills ) )
54
+ const user = await helper . getUser ( handle )
55
+ for ( const key of _ . keys ( createSkills ) ) {
56
+ await syncUserSkill ( user . id , key , createSkills [ key ] . score , skillProvider . id )
57
+ await helper . sleep ( )
58
+ }
59
+ for ( const key of _ . keys ( updateSkills ) ) {
60
+ await syncUserSkill ( user . id , key , createSkills [ key ] . score , skillProvider . id )
61
+ await helper . sleep ( )
62
+ }
63
+ for ( const key of _ . keys ( deleteSkills ) ) {
64
+ await syncUserSkill ( user . id , key , 0 , skillProvider . id , true )
65
+ await helper . sleep ( )
66
+ }
67
+ } catch ( e ) {
68
+ console . log ( `sync user's skills failed. Error: ${ e . message } ` )
49
69
}
50
- console . log ( 'Skills to create:' , JSON . stringify ( createSkills ) )
51
- console . log ( 'Skills to update:' , JSON . stringify ( updateSkills ) )
52
- console . log ( 'Skills to delete:' , JSON . stringify ( deleteSkills ) )
53
- const user = await helper . getUser ( handle )
54
- for ( const key of _ . keys ( createSkills ) ) {
55
- await syncUserSkill ( user . id , key , createSkills [ key ] . score , skillProvider . id )
56
- await helper . sleep ( )
57
- }
58
- for ( const key of _ . keys ( updateSkills ) ) {
59
- await syncUserSkill ( user . id , key , createSkills [ key ] . score , skillProvider . id )
60
- await helper . sleep ( )
61
- }
62
- for ( const key of _ . keys ( deleteSkills ) ) {
63
- await syncUserSkill ( user . id , key , 0 , skillProvider . id , true )
64
- await helper . sleep ( )
65
- }
66
- } catch ( e ) {
67
- console . log ( `sync user's skills failed. Error: ${ e . message } ` )
68
70
}
71
+ } catch ( e ) {
72
+ console . log ( `some error occured: ${ e . message } ` )
69
73
}
70
74
}
0 commit comments