class Rubill::Base
Attributes
remote_record[RW]
Public Class Methods
active()
click to toggle source
# File lib/rubill/base.rb, line 19 def self.active where([Query::Filter.new("isActive", "=", "1")]) end
all()
click to toggle source
# File lib/rubill/base.rb, line 86 def self.all # Note: this method returns ALL of desired entity, including inactive where([]) end
create(data)
click to toggle source
# File lib/rubill/base.rb, line 39 def self.create(data) new(Query.create(remote_class_name, data.merge({entity: remote_class_name}))) end
delete(id)
click to toggle source
# File lib/rubill/base.rb, line 47 def self.delete(id) Query.delete(remote_class_name, id) end
find(id)
click to toggle source
# File lib/rubill/base.rb, line 35 def self.find(id) new(Query.read(remote_class_name, id)) end
find_by_name(name)
click to toggle source
# File lib/rubill/base.rb, line 51 def self.find_by_name(name) filter = Query::Filter.new("name", "=", name) raw_result = Query.list(remote_class_name, 0, 1, [filter]) raw_result.length > 0 ? new(raw_result.first) : nil end
new(remote)
click to toggle source
# File lib/rubill/base.rb, line 7 def initialize(remote) self.remote_record = remote end
update(data)
click to toggle source
# File lib/rubill/base.rb, line 43 def self.update(data) Query.update(remote_class_name, data.merge({entity: remote_class_name})) end
where(filters=[])
click to toggle source
# File lib/rubill/base.rb, line 58 def self.where(filters=[]) raise ArgumentError unless filters.is_a?(Enumerable) raise ArgumentError if !filters.is_a?(Hash) && !filters.all? { |f| f.is_a?(Query::Filter) } if filters.is_a?(Hash) filters = filters.map do |field, value| Query::Filter.new(field.to_s, "=", value) end end result = [] start = 0 step = 999 loop do chunk = Query.list(remote_class_name, start, step, filters) if !chunk.empty? records = chunk.map { |r| new(r) } result += records start += step end break if chunk.length < step end result end
Private Class Methods
remote_class_name()
click to toggle source
# File lib/rubill/base.rb, line 93 def self.remote_class_name # Assume remote class name is the same as the class name self.name.sub('Rubill::', '') end
Public Instance Methods
[](key)
click to toggle source
# File lib/rubill/base.rb, line 11 def [](key) remote_record.send(:[], key) end
[]=(key, value)
click to toggle source
# File lib/rubill/base.rb, line 15 def []=(key, value) remote_record.send(:[]=, key, value) end
delete()
click to toggle source
# File lib/rubill/base.rb, line 31 def delete self.class.delete(id) end
id()
click to toggle source
# File lib/rubill/base.rb, line 23 def id remote_record[:id] end
save()
click to toggle source
# File lib/rubill/base.rb, line 27 def save self.class.update(remote_record) end