diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-04-18 12:33:44 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-04-18 12:33:44 +0300 |
commit | 84eeb9468c16f7192f9e3b911beeb6e472f4b907 (patch) | |
tree | 00a597d24e9ecd2972cd61a1b16c8abbb106cdae /app/workers | |
parent | 40653b65b6a45df358ce40a278b08982891c541e (diff) | |
parent | ab650e7c6753d2f4c418496ad74dc87e243a5b2b (diff) |
Merge branch 'stuartnelson3/gitlab-ce-stn/issue-due-email' into 'master'
Email notification on issue due date
Closes #27500
See merge request gitlab-org/gitlab-ce!17985
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/all_queues.yml | 3 | ||||
-rw-r--r-- | app/workers/concerns/mail_scheduler_queue.rb | 7 | ||||
-rw-r--r-- | app/workers/issue_due_scheduler_worker.rb | 10 | ||||
-rw-r--r-- | app/workers/mail_scheduler/issue_due_worker.rb | 14 |
4 files changed, 34 insertions, 0 deletions
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 9a11cdb121e..9aea3bad27b 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -18,6 +18,7 @@ - cronjob:stuck_import_jobs - cronjob:stuck_merge_jobs - cronjob:trending_projects +- cronjob:issue_due_scheduler - gcp_cluster:cluster_install_app - gcp_cluster:cluster_provision @@ -39,6 +40,8 @@ - github_importer:github_import_stage_import_pull_requests - github_importer:github_import_stage_import_repository +- mail_scheduler:mail_scheduler_issue_due + - object_storage_upload - object_storage:object_storage_background_move - object_storage:object_storage_migrate_uploads diff --git a/app/workers/concerns/mail_scheduler_queue.rb b/app/workers/concerns/mail_scheduler_queue.rb new file mode 100644 index 00000000000..9df55ad9522 --- /dev/null +++ b/app/workers/concerns/mail_scheduler_queue.rb @@ -0,0 +1,7 @@ +module MailSchedulerQueue + extend ActiveSupport::Concern + + included do + queue_namespace :mail_scheduler + end +end diff --git a/app/workers/issue_due_scheduler_worker.rb b/app/workers/issue_due_scheduler_worker.rb new file mode 100644 index 00000000000..16ab5d069e0 --- /dev/null +++ b/app/workers/issue_due_scheduler_worker.rb @@ -0,0 +1,10 @@ +class IssueDueSchedulerWorker + include ApplicationWorker + include CronjobQueue + + def perform + project_ids = Issue.opened.due_tomorrow.group(:project_id).pluck(:project_id).map { |id| [id] } + + MailScheduler::IssueDueWorker.bulk_perform_async(project_ids) + end +end diff --git a/app/workers/mail_scheduler/issue_due_worker.rb b/app/workers/mail_scheduler/issue_due_worker.rb new file mode 100644 index 00000000000..b06079d68ca --- /dev/null +++ b/app/workers/mail_scheduler/issue_due_worker.rb @@ -0,0 +1,14 @@ +module MailScheduler + class IssueDueWorker + include ApplicationWorker + include MailSchedulerQueue + + def perform(project_id) + notification_service = NotificationService.new + + Issue.opened.due_tomorrow.in_projects(project_id).preload(:project).find_each do |issue| + notification_service.issue_due(issue) + end + end + end +end |