about summary refs log tree commit diff
path: root/app/workers/scheduler/email_scheduler.rb
diff options
context:
space:
mode:
authorJenkins <jenkins@jenkins.ninjawedding.org>2018-01-15 06:17:15 +0000
committerJenkins <jenkins@jenkins.ninjawedding.org>2018-01-15 06:17:15 +0000
commit0c7dc6c78123728a9a0a32e16c2ad524e76926c8 (patch)
treed599071d84f545e16a8ebaddf6e215cadc89247d /app/workers/scheduler/email_scheduler.rb
parent8ee6ed358ff5706e3d0c402a9b23846b51f6d451 (diff)
parent74c1c9ec01addc7474d74712f76fb6d6d5eecdf7 (diff)
Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master
Diffstat (limited to 'app/workers/scheduler/email_scheduler.rb')
-rw-r--r--app/workers/scheduler/email_scheduler.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb
new file mode 100644
index 000000000..24d0c0ebe
--- /dev/null
+++ b/app/workers/scheduler/email_scheduler.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+require 'sidekiq-scheduler'
+
+class Scheduler::EmailScheduler
+  include Sidekiq::Worker
+
+  def perform
+    eligible_users.find_each do |user|
+      next unless user.allows_digest_emails?
+      DigestMailerWorker.perform_async(user.id)
+    end
+  end
+
+  private
+
+  def eligible_users
+    User.confirmed
+        .joins(:account)
+        .where(accounts: { silenced: false, suspended: false })
+        .where(disabled: false)
+        .where('current_sign_in_at < ?', 20.days.ago)
+        .where('last_emailed_at IS NULL OR last_emailed_at < ?', 20.days.ago)
+  end
+end