Sha256: 0a683ccae041af31b9ac0d398b189934dfd20f6fcaf2eb2a60a451ca0a97befe

Contents?: true

Size: 860 Bytes

Versions: 19

Compression:

Stored size: 860 Bytes

Contents

# frozen_string_literal: true

module AcidicJob
  class WorkflowBuilder
    attr_reader :steps

    def initialize
      @steps = []
    end

    def step(method_name, awaits: [], for_each: nil)
      @steps << {
        "does" => method_name.to_s,
        "awaits" => awaits,
        "for_each" => for_each
      }

      @steps
    end
    alias_method "✅", :step

    def define_workflow
      # [ { does: "step 1", awaits: [] }, { does: "step 2", awaits: [] }, ... ]
      @steps << { "does" => Run::FINISHED_RECOVERY_POINT.to_s }

      {}.tap do |workflow|
        @steps.each_cons(2).map do |enter_step, exit_step|
          enter_name = enter_step["does"]
          workflow[enter_name] = enter_step.merge("then" => exit_step["does"])
        end
      end
      # { "step 1": { does: "step 1", awaits: [], then: "step 2" }, ...  }
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
acidic_job-0.9.0 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.8 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.7 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.5 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.4 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.3 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.2 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.1 lib/acidic_job/workflow_builder.rb
acidic_job-0.8.0 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.10 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.9 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.8 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.7 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.6 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.5 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.4 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.3 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.2 lib/acidic_job/workflow_builder.rb
acidic_job-1.0.0.beta.1 lib/acidic_job/workflow_builder.rb