class Eco::API::UseCases::UseCaseIO

InputOutput class for usecases. @note Same as Eco::API::UseCases::BaseIO but:

- includes `type` of usecase
- provides a helper to `chain` InputOutput between usecases

@attr_reader usecase [Eco::API::UseCases::UseCase] the usecase this InputOuput is linked to

Attributes

usecase[R]

Public Class Methods

new(usecase:, job: nil, **kargs) click to toggle source

@param usecase [Eco::API::UseCases::UseCase] the target `usecase` @param job [Eco::API::Session::Batch::Job] the default `job` of the usecase @see Eco::API::UseCases::BaseIO#initialize

Calls superclass method Eco::API::UseCases::BaseIO::new
# File lib/eco/api/usecases/use_case_io.rb, line 18
def initialize(usecase:, job: nil, **kargs)
  self.usecase = usecase
  @job         = job
  super(**kargs)
end

Public Instance Methods

chain(usecase:) click to toggle source
# File lib/eco/api/usecases/use_case_io.rb, line 62
def chain(usecase:)
  raise "It should be a UseCase. Given: #{usecase}" if !usecase.is_a?(UseCase)
  #aux_io = self.class.new(input: input, people: people, session: session, options: options, usecase: usecase)
  #kargs  = aux_io.params(keyed: true)
  kargs  = params(keyed: true, all: true).merge(usecase: usecase)
  kargs.delete(:job)
  case self.type
  when :import
    kargs[:input]  = output
  when :filter
    kargs[:people] = output
  when :transform, :sync, :export, :error_handler, :other
    # no redirections => should it redirect the input?
  end
  self.class.new(**kargs)
end
new(usecase:, **kargs) click to toggle source

@see Eco::API::UseCases::BaseIO#new @param usecase [Eco::API::UseCases::UseCase] target usecase @return [Eco::API::UseCases::UseCaseIO]

Calls superclass method Eco::API::UseCases::BaseIO::new
# File lib/eco/api/usecases/use_case_io.rb, line 27
def new(usecase:, **kargs)
  default = { usecase: usecase }
  default.merge!(job: @job) if @job
  super(**default.merge(kargs))
end
params(keyed: false, all: false) click to toggle source

@see Eco::API::UseCases::BaseIO#params Same as its superclass but adding `usecase` and `job` parameters

Calls superclass method Eco::API::UseCases::BaseIO#params
# File lib/eco/api/usecases/use_case_io.rb, line 50
def params(keyed: false, all: false)
  super(keyed: keyed, all: all).tap do |res|
    if keyed
      res.merge!(usecase: usecase)
      res.merge!(job: @job) if @job
    else
      res.push(usecase)
      res.push(@job) if @job
    end
  end
end
type() click to toggle source

@return [Symbol] the `type` of the UseCase this InputOuput is linked to

# File lib/eco/api/usecases/use_case_io.rb, line 40
def type
  @usecase.type
end
type=(value) click to toggle source
# File lib/eco/api/usecases/use_case_io.rb, line 44
def type=(value)
  raise "Can't modify type depends on the usecase linked to this IO object"
end
usecase=(value) click to toggle source

@param value [Eco::API::UseCases::UseCase] the usecase this InputOuput should be linked to

# File lib/eco/api/usecases/use_case_io.rb, line 34
def usecase=(value)
  raise "It should be a Eco::API::UseCases::UseCase. Given: #{value}" if !value.is_a?(Eco::API::UseCases::UseCase)
  @usecase = value
end