class Golden::QueryFormOperator

Attributes

form[R]
mode[RW]
params[R]

Public Class Methods

has_query_form(form: nil, form_presenter: nil, result_presenter: nil, record_presenter: nil) click to toggle source

rubocop:disable Naming/PredicateName

# File lib/golden/objects/query/query_form_operator.rb, line 7
def has_query_form(form: nil, form_presenter: nil, result_presenter: nil, record_presenter: nil)
  define_method :form_class do
    return form.to_s.constantize if form.present?

    "#{self.class.parent.name}::QueryForm".constantize
  end

  define_method :form_presenter_class do
    return form_presenter.to_s.constantize if form_presenter.present?

    "#{self.class.parent.name}::QueryFormPresenter".constantize
  end

  define_method :result_presenter_class do
    return result_presenter.to_s.constantize if result_presenter.present?

    "#{self.class.parent.name}::QueryResultPresenter".constantize
  end

  define_method :record_presenter_class do
    return record_presenter.to_s.constantize if record_presenter.present?

    "#{self.class.parent.name}::QueryRecordPresenter".constantize
  end
end
new(params, accessors = {}) click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 42
def initialize(params, accessors = {})
  @params = params
  assign_attributes(accessors || {})
  run_callbacks(:build_form) { @form ||= build_form }
end

Public Instance Methods

form_presenter() click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 54
def form_presenter
  @form_presenter ||= form_presenter_class.new form
end
perform() click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 48
def perform
  form.save
  errors.merge! form.errors
  errors.empty?
end
result_presenter() click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 58
def result_presenter
  @result_presenter ||= result_presenter_class.collect query_result, record_presenter_class.name
end

Private Instance Methods

build_form() click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 78
def build_form
  form_accessors = send(:query_accessors) if private_methods.include? :query_accessors
  form_class.new query_params, form_accessors
end
query_accessors() click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 68
def query_accessors
  {
    mode: mode
  }
end
query_params() click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 64
def query_params
  params
end
query_result() click to toggle source
# File lib/golden/objects/query/query_form_operator.rb, line 74
def query_result
  form.result
end