class Eco::API::UseCases::BaseIO
Basic class to manage InputOuput for usecases
Attributes
input[R]
options[R]
output[RW]
people[R]
session[R]
type[R]
Public Class Methods
input_required?(type)
click to toggle source
# File lib/eco/api/usecases/base_io.rb, line 22 def input_required?(type) !valid_type?(type) || [:import, :sync].include?(type) end
new(type: nil, input: nil, people: nil, session:, options: {}, validate: true)
click to toggle source
@param type [Symbol] a valid type (among `self.class.types`) @param input [Eco::API::Common::People::Entries, Eco::API::Organization::People] the input data of reference. @param people [Eco::API::Organization::People] people object. @param session [Eco::API:Session] @param options [Hash] hash with symbol keys (i.e. behaviour modifiers, cli trackers, filters, etc.)
# 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
people_required?(type)
click to toggle source
# 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
Public Instance Methods
base()
click to toggle source
Helper to obtain an `BaseIO` objcect from any child class. @return [Eco::API::UseCases::BaseIO]
# 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)
click to toggle source
@see Eco::API::UseCases::BaseIO#initialize @return [Eco::API::UseCases::BaseIO]
# 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)
click to toggle source
Helper to build a `Hash` of symbol keys or `Array` with params to do callbacks.
# 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
type=(value)
click to toggle source
@param value [Symbol] a valid type (among `self.class.types`)
# File lib/eco/api/usecases/base_io.rb, line 56 def type=(value) self.class.validate_type(value) @type = value end
Private Instance Methods
input_required?()
click to toggle source
# File lib/eco/api/usecases/base_io.rb, line 107 def input_required? self.class.input_required?(type) end
people_required?()
click to toggle source
# File lib/eco/api/usecases/base_io.rb, line 111 def people_required? self.class.people_required?(type) end
validate_args(input:, people:, session:, options:)
click to toggle source
# File lib/eco/api/usecases/base_io.rb, line 93 def validate_args(input:, people:, session:, options:) case when !session.is_a?(Eco::API::Session) raise MissingParameter.new("UseCase", required: :session, given: session.class) when input_required? && !input raise MissingParameter.new("UseCase", type: type, required: :input, given: input.class) when people_required? && !people.is_a?(Eco::API::Organization::People) raise MissingParameter.new("UseCase", type: type, required: :people, given: people.class) when !options || (options && !options.is_a?(Hash)) raise MissingParameter.new("Use Case options", required: :Hash, given: options.class) end true end