FEATURE: send max 200 emails every minute for bulk invites (#7875)

DEV: deprecate `invite.via_email` in favor of `invite.emailed_status`

This commit adds a new column `emailed_status` in `invites` table for
 tracking email sending status.
 0 - not required
 1 - pending
 2 - bulk pending
 3 - sending
 4 - sent

For normal email invites, invite record is created with emailed_status
 set to 'pending'.

When bulk invites are sent invite record is created with emailed_status
 set to 'bulk pending'.

For invites that generates link, invite record is created with
 emailed_status set to 'not required'.

When invite email is in queue emailed_status is updated to 'sending'

Once the email is sent via `InviteEmail` job the invite emailed_status
 is updated to 'sent'.
This commit is contained in:
Arpit Jalan
2019-07-19 11:29:12 +05:30
committed by GitHub
parent d26aa6e71e
commit eb9155f3fe
15 changed files with 185 additions and 26 deletions

View File

@@ -353,7 +353,7 @@ describe InvitesController do
context "with password" do
context "user was invited via email" do
before { invite.update_column(:via_email, true) }
before { invite.update_column(:emailed_status, Invite.emailed_status_types[:pending]) }
it "doesn't send an activation email and activates the user" do
expect do
@@ -373,7 +373,7 @@ describe InvitesController do
end
context "user was invited via link" do
before { invite.update_column(:via_email, false) }
before { invite.update_column(:emailed_status, Invite.emailed_status_types[:not_required]) }
it "sends an activation email and doesn't activate the user" do
expect do