39 lines
1.2 KiB
Ruby
39 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
namespace :data_migrations do
|
|
desc 'Set initial status for tasks'
|
|
task set_initial_status_for_tasks: :environment do
|
|
Task.includes(project: :task_statuses).in_batches do |tasks|
|
|
projects = Project.where(id: tasks.pluck(:project_id))
|
|
statuses = TaskStatus.backlog.where(project: projects).group_by(&:project)
|
|
|
|
tasks.each do |task|
|
|
task.update!(status: statuses[task.project].first)
|
|
end
|
|
end
|
|
end
|
|
|
|
desc 'Create initial workflows for projects'
|
|
task create_initial_workflows: :environment do
|
|
Project.find_each do |project|
|
|
Projects::CreateDefaults.create_default_workflow(project)
|
|
end
|
|
end
|
|
|
|
desc 'Set workflows for statuses'
|
|
task set_default_task_status_workflows: :create_initial_workflows do
|
|
TaskStatus.includes(project: :workflows).find_each do |ts|
|
|
ts.workflow = ts.project.workflows.first
|
|
ts.save!
|
|
end
|
|
end
|
|
|
|
desc 'Set workflows for tasks'
|
|
task set_default_task_workflows: %i[create_initial_workflows set_default_task_status_workflows] do
|
|
Task.includes(project: :workflows).find_each do |task|
|
|
task.workflow = task.project.workflows.first
|
|
task.save!
|
|
end
|
|
end
|
|
end
|