class Eco::API::UseCases::UseCase

Attributes

name[R]
options[R]
times_launched[R]
type[R]

Public Class Methods

new(name, type:, root:, &block) click to toggle source
# File lib/eco/api/usecases/use_case.rb, line 10
def initialize(name, type:, root:, &block)
  raise InvalidType.new("Invalid type for '#{name}'.", type: type, types: self.class.types) unless self.class.valid_type?(type)

  self.root = root
  @callback = block
  @name     = name
  @type     = type
  @times_launched = 0
end

Public Instance Methods

chainer() click to toggle source
# File lib/eco/api/usecases/use_case.rb, line 20
def chainer
  # TODO: root is a Eco::API::UseCases 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
launch(io: nil, **kargs) click to toggle source

Actual launch of the usecase @param io [Eco::API::UseCases::BaseIO] an input/output helper with the necessary parameters. @param kargs [Hash] hash with symbol keys. @option kargs [Eco::API::Common::People::Entries, Eco::API::Organization::People] :input the input data of reference. @option kargs [Eco::API::Organization::People] :people object. @option kargs [Eco::API:Session] :session @option kargs [Hash] :options hash with symbol keys (i.e. behaviour modifiers, cli trackers, filters, etc.)

# File lib/eco/api/usecases/use_case.rb, line 38
def launch(io: nil, **kargs)
  params = io&.params(keyed: true, all: true) || {}
  kargs  = params.merge(kargs).merge(usecase: self)

  UseCaseIO.new(**kargs).tap do |uio|
    @options   = uio.options
    uio.session.logger.debug("#{self.class}: going to process '#{name}'")
    uio.output = @callback.call(*uio.params)
    @times_launched += 1
  end
end
root=(value) click to toggle source
# File lib/eco/api/usecases/use_case.rb, line 26
def root=(value)
  raise "Root should be a Eco::API::UseCases. Given: #{value.class}" if !value.is_a?(Eco::API::UseCases)
  @root = value
end

Protected Instance Methods

callback() click to toggle source
# File lib/eco/api/usecases/use_case.rb, line 52
def callback
  @callback
end