lib/eco/api/usecases/use_case.rb in eco-helpers-0.9.1 vs lib/eco/api/usecases/use_case.rb in eco-helpers-0.9.2

- old
+ new

@@ -8,11 +8,11 @@ import: [:input, :session], filter: [:people, :session, :options], transform: [:people, :session], export: [:people, :session, :options] } - + class << self def valid_type?(type) TYPES.include?(type) end @@ -27,32 +27,44 @@ def initialize(name, type:, root:, &block) raise "Undefined usecase type #{type}, when creating '#{name}'. Please, use any of #{TYPES}" unless self.class.valid_type?(type) self.root = root - @case = block + @callback = block @name = name @type = type @times_launched = 0 end + def chainer + # TODO: root is a UseGroup that will not point to this new case. + # => Moreover, the name and type will be the same as self + Eco::API::UseCases::UseCaseChain.new(usecase: self, root: @root) + end + def root=(value) raise "Root should be a UseGroup. Given: #{value}" if !value.is_a?(UseGroup) @root = value end def launch(input: nil, people: nil, session:, options: {}) @options = options data = UseCaseIO.new(usecase: self, input: input, people: people, session: session, options: options) - data.output = @case.call(data.params) + data.output = @callback.call(data.params) @times_launched += 1 data_model = { self => { io: data } } + end + + protected + + def callback + @callback end end end