[messaging] Add messageParticipant matching once people emails are updated #3887
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
This PR introduces nestjs-emitter package so we can emit events whenever standard objects are created/updated.
We needed that because we want to be able to match message participants with people in the DB (or workspace members) when their email addresses are changed (or when a new person/member is created) retroactively.
The other solution is to directly add this logic to the service responsible to mutate the person object however there is none due to our way of managing standard objects and dynamically send the request to the DB.
Implementation
As specified above, there is no person service so the best place to do that is to emit an event in the workspace query runner since this is where we query pg_graphql (and the DB) and get its response. Each mutation has now its own topic that follows this rule:
object_name_singular.created/updated/deleted
, formany
resolvers we trigger an event of each record.