Class: Eco::API::UseCases::BaseIO

Inherits:
BaseCase
  • Object
show all
Defined in:
lib/eco/api/usecases/base_io.rb

Overview

Basic class to manage InputOuput for usecases

Direct Known Subclasses

UseCaseIO

Defined Under Namespace

Classes: MissingParameter

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseCase

valid_type?, validate_type

Methods included from Common::ClassHelpers

#class_resolver, #descendants, #descendants?, #inheritable_attrs, #inheritable_class_vars, #inherited, #instance_variable_name, #new_class, #resolve_class, #to_constant

Constructor Details

#initialize(type: nil, input: nil, people: nil, session:, options: {}, validate: true) ⇒ BaseIO

Returns a new instance of BaseIO.

Parameters:



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/eco/api/usecases/base_io.rb', line 41

def initialize(type: nil, input: nil, people: nil, session:, options: {}, validate: true)
  @output      = nil
  self.type    = type if type

  if self.type && validate
    validate_args(input: input, people: people, session: session, options: options)
  end

  @input       = input
  @people      = people
  @session     = session
  @options     = options
end

Instance Attribute Details

#inputObject (readonly)

Returns the value of attribute input.



32
33
34
# File 'lib/eco/api/usecases/base_io.rb', line 32

def input
  @input
end

#optionsObject (readonly)

Returns the value of attribute options.



32
33
34
# File 'lib/eco/api/usecases/base_io.rb', line 32

def options
  @options
end

#outputObject

Returns the value of attribute output.



34
35
36
# File 'lib/eco/api/usecases/base_io.rb', line 34

def output
  @output
end

#peopleObject (readonly)

Returns the value of attribute people.



32
33
34
# File 'lib/eco/api/usecases/base_io.rb', line 32

def people
  @people
end

#sessionObject (readonly)

Returns the value of attribute session.



32
33
34
# File 'lib/eco/api/usecases/base_io.rb', line 32

def session
  @session
end

#typeObject

Returns the value of attribute type.



33
34
35
# File 'lib/eco/api/usecases/base_io.rb', line 33

def type
  @type
end

Class Method Details

.input_required?(type) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/eco/api/usecases/base_io.rb', line 22

def input_required?(type)
  !valid_type?(type) || [:import, :sync].include?(type)
end

.people_required?(type) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/eco/api/usecases/base_io.rb', line 26

def people_required?(type)
  !valid_type?(type) || [:filter, :transform, :sync, :error_handler, :export].include?(type)
end

Instance Method Details

#baseEco::API::UseCases::BaseIO

Helper to obtain an BaseIO objcect from any child class.



63
64
65
66
# File 'lib/eco/api/usecases/base_io.rb', line 63

def base
  kargs = params(keyed: true).merge(type: self.type).slice(:type, :input, :people, :session, :options)
  Eco::API::UseCases::BaseIO.new(**kargs)
end

#new(**kargs) ⇒ Eco::API::UseCases::BaseIO



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/eco/api/usecases/base_io.rb', line 70

def new(**kargs)
  default = {
    type:     self.type,
    input:    self.input,
    people:   self.people,
    session:  self.session,
    options:  self.options,
    validate: true
  }.merge(kargs)
  self.class.new(**default.merge(kargs))
end

#params(keyed: false, all: false) ⇒ Object

Helper to build a Hash of symbol keys or Array with params to do callbacks.



83
84
85
86
87
88
89
# File 'lib/eco/api/usecases/base_io.rb', line 83

def params(keyed: false, all: false)
  kargs = {}
  kargs.merge!(input:    input)  if input_required?  || all
  kargs.merge!(people:  people)  if people_required? || all
  kargs.merge!(session: session, options: options)
  keyed ? kargs : kargs.values
end