module WiseGopher::Base::ClassMethods

class methods for WiseGopher::Base

Attributes

params[R]
raw_params[R]
row_class[R]

Public Instance Methods

ensure_all_params_are_given(inputs = {}) click to toggle source
# File lib/wise_gopher/base.rb, line 61
def ensure_all_params_are_given(inputs = {})
  missing_params = required_params.keys - inputs.keys.map(&:to_s)

  raise WiseGopher::ArgumentError, required_params.slice(*missing_params) if missing_params.any?
end
execute() click to toggle source
# File lib/wise_gopher/base.rb, line 49
def execute
  ensure_all_params_are_given

  new.execute
end
execute_with(inputs) click to toggle source
# File lib/wise_gopher/base.rb, line 55
def execute_with(inputs)
  ensure_all_params_are_given(inputs)

  new(inputs).execute
end
param(name, type, transform = nil) click to toggle source
# File lib/wise_gopher/base.rb, line 25
def param(name, type, transform = nil)
  new_param = WiseGopher::Param.new(name, type, transform)

  ensure_param_name_is_available(new_param.name)

  params[new_param.name] = new_param
end
query(query) click to toggle source
# File lib/wise_gopher/base.rb, line 21
def query(query)
  const_set "QUERY", query.freeze
end
raw_param(name, **kwargs) click to toggle source
# File lib/wise_gopher/base.rb, line 33
def raw_param(name, **kwargs)
  raw_param = WiseGopher::RawParam.new(name, **kwargs)

  ensure_param_name_is_available(raw_param.name)

  raw_params[raw_param.name] = raw_param
end
row(base = nil, &block) click to toggle source
# File lib/wise_gopher/base.rb, line 41
def row(base = nil, &block)
  @row_class ||= base || define_generic_row_class

  @row_class.include WiseGopher::Row

  @row_class.class_eval(&block) if block_given?
end

Private Instance Methods

define_generic_row_class() click to toggle source
# File lib/wise_gopher/base.rb, line 69
def define_generic_row_class
  @row_class = const_set "Row", Class.new
end
ensure_param_name_is_available(name) click to toggle source
# File lib/wise_gopher/base.rb, line 73
def ensure_param_name_is_available(name)
  return unless params[name] || raw_params[name]

  raise WiseGopher::ParamAlreadyDeclared, name
end
required_params() click to toggle source
# File lib/wise_gopher/base.rb, line 79
def required_params
  params.merge(raw_params.reject { |_name, raw_param| raw_param.optional? })
end