@@ -22,6 +22,7 @@ function createSchema () {
2222 . email ( )
2323 . optional ( )
2424 . allow ( null ) ,
25+ hashEmail : Joi . string ( ) . optional ( ) . allow ( null ) ,
2526 status : Joi . any ( )
2627 . valid ( _ . values ( INVITE_STATUS ) )
2728 . required ( )
@@ -52,33 +53,48 @@ create.schema = {
5253 message : createSchema ( )
5354}
5455
56+ // handle ES Update or Delete on invites
57+ const updateInvitesPromise = message => async ( doc ) => {
58+ // now merge the updated changes and re-index the document
59+ const invites = _ . isArray ( doc . _source . invites ) ? doc . _source . invites : [ ]
60+ _ . remove ( invites , invite => ( ! ! message . email && invite . email === message . email ) ||
61+ ( ! ! message . userId && invite . userId === message . userId ) )
62+ return _ . assign ( doc . _source , { invites } )
63+ }
64+
5565/**
5666 * Update message in Elasticsearch.
5767 * @param {Object } message the challenge updated message
5868 * @return {Promise } promise result
5969 */
6070async function update ( message ) {
61- // handle ES Update
62- async function updateDocPromise ( doc ) {
63- // now merge the updated changes and reindex the document
64- const invites = _ . isArray ( doc . _source . invites ) ? doc . _source . invites : [ ]
65- _ . remove ( invites , invite => ( ! ! message . email && invite . email === message . email ) ||
66- ( ! ! message . userId && invite . userId === message . userId ) )
67- return _ . assign ( doc . _source , { invites } )
68- }
69-
70- await helper . updateProjectESPromise ( message . projectId , updateDocPromise )
71+ await helper . updateProjectESPromise ( message . projectId , updateInvitesPromise ( message ) )
7172 logger . debug ( `Member invite updated successfully in elasticsearch index, (memberInviteId: ${ message . id } )` )
7273}
7374
7475update . schema = {
7576 message : createSchema ( )
7677}
7778
79+ /**
80+ * Delete message in Elasticsearch.
81+ * @param {Object } message the deleted message
82+ * @return {Promise } promise result
83+ */
84+ async function deleteMessage ( message ) {
85+ await helper . updateProjectESPromise ( message . projectId , updateInvitesPromise ( message ) )
86+ logger . debug ( `Member invite deleted successfully in elasticsearch index, (memberInviteId: ${ message . id } )` )
87+ }
88+
89+ deleteMessage . schema = {
90+ message : createSchema ( )
91+ }
92+
7893// Exports
7994module . exports = {
8095 create,
81- update
96+ update,
97+ deleteMessage
8298}
8399
84100logger . buildService ( module . exports )
0 commit comments