class Botz::Binder
Bind resource received from the connection to the result object
Attributes
resource[R]
Public Class Methods
field(name, query = nil, optional: false, &block)
click to toggle source
# File lib/botz/binder.rb, line 61 def self.field(name, query = nil, optional: false, &block) field_names << name field_names.uniq! result_class.define(name, presence: !optional) define_method(name) do connector.field.call(self, query, &block) end end
fields(query, &block)
click to toggle source
# File lib/botz/binder.rb, line 70 def self.fields(query, &block) @fields = { query: query, block: block } end
fields_call(binder)
click to toggle source
# File lib/botz/binder.rb, line 74 def self.fields_call(binder) Multiple.bind(connector: connector, binder: binder, query: @fields[:query], block: @fields[:block]) if @fields end
new(resource)
click to toggle source
# File lib/botz/binder.rb, line 34 def initialize(resource) @resource = resource self.class.fields_call(self) end
query(name, query = nil, &block)
click to toggle source
# File lib/botz/binder.rb, line 55 def self.query(name, query = nil, &block) define_method(name) do connector.field.call(self, query, &block) end end
Public Instance Methods
attributes()
click to toggle source
# File lib/botz/binder.rb, line 51 def attributes field_names.map { |field_name| [field_name, send(field_name)] }.to_h end
attributes_to_array()
click to toggle source
# File lib/botz/binder.rb, line 47 def attributes_to_array field_names.map { |field_name| send(field_name) } end
result()
click to toggle source
# File lib/botz/binder.rb, line 39 def result definition = self fetched_at = Time.current result = self.class.result_class.new(fetched_at: fetched_at, fetched_on: fetched_at.beginning_of_day, **attributes) result.define_singleton_method(:resource) { definition.resource } result end