module RediJsonModels::RediJsonModelLib

Constants

INFLECTOR

Public Instance Methods

all() click to toggle source
# File lib/redijson_models.rb, line 29
def all
  1.upto(count).map do |entry_id|
    get entry_id
  end
end
count() click to toggle source
# File lib/redijson_models.rb, line 35
def count
  ( RJ["#{resource}:count"] || 0 ).to_i
end
create(attrs) click to toggle source
# File lib/redijson_models.rb, line 52
def create(attrs)
  id = incr
  attrs.merge! id: id
  obj  = new attrs
  RJ["#{resource}:#{id}"] = obj.attributes
  obj
end
get(id) click to toggle source
# File lib/redijson_models.rb, line 39
def get(id)
  data = RJ["#{resource}:#{id}"]
  return unless data
  new data
end
get_attr(id, attr) click to toggle source
# File lib/redijson_models.rb, line 45
def get_attr(id, attr)
  key = "#{resource}:#{id}"
  data = RJ.redis.json_get key, ".name"
  return NilValue.new unless data
  data
end
resource() click to toggle source
# File lib/redijson_models.rb, line 65
def resource
  INFLECTOR.pluralize model_name
end
update(id, attrs) click to toggle source
# File lib/redijson_models.rb, line 60
def update(id, attrs)
  resource = get id
  resource.update attrs
end

Private Instance Methods

incr() click to toggle source

TODO: use incr

# File lib/redijson_models.rb, line 72
def incr
  RJ["#{resource}:count"] = count + 1
end
model_name() click to toggle source
# File lib/redijson_models.rb, line 76
def model_name
  self.name.downcase
end