module CPEE::Persistence

Constants

OBJ

Public Class Methods

each_object(opts) { |instance| ... } click to toggle source
# File lib/cpee/persistence.rb, line 75
def self::each_object(opts)
  opts[:redis].zrevrange(OBJ + 's',0,-1).each do |instance|
    yield instance
  end
end
exists?(id,opts) click to toggle source
# File lib/cpee/persistence.rb, line 68
def self::exists?(id,opts) #{{{
  opts[:redis].exists?(OBJ + ":#{id}/state")
end
exists_handler?(id,opts,key) click to toggle source
# File lib/cpee/persistence.rb, line 125
def self::exists_handler?(id,opts,key) #{{{
  opts[:redis].exists?(OBJ + ":#{id}/handlers/#{key}")
end
extract_handler(id,opts,key) click to toggle source
# File lib/cpee/persistence.rb, line 122
def self::extract_handler(id,opts,key) #{{{
  opts[:redis].smembers(OBJ + ":#{id}/handlers/#{key}")
end
extract_handlers(id,opts) click to toggle source
# File lib/cpee/persistence.rb, line 128
def self::extract_handlers(id,opts) #{{{
  opts[:redis].smembers(OBJ + ":#{id}/handlers").map do |e|
    [e, opts[:redis].get(OBJ + ":#{id}/handlers/#{e}/url")]
  end
end
extract_item(id,opts,item) click to toggle source
# File lib/cpee/persistence.rb, line 64
def self::extract_item(id,opts,item) #{{{
  opts[:redis].get(OBJ + ":#{id}/#{item}")
end
extract_list(id,opts,item) click to toggle source
# File lib/cpee/persistence.rb, line 46
def self::extract_list(id,opts,item) #{{{
  opts[:redis].zrange(OBJ + ":#{id}/#{item}",0,-1).map do |e|
    [e,opts[:redis].get(OBJ + ":#{id}/#{item}/#{e}")]
  end
end
extract_set(id,opts,item) click to toggle source
# File lib/cpee/persistence.rb, line 41
def self::extract_set(id,opts,item) #{{{
  opts[:redis].smembers(OBJ + ":#{id}/#{item}").map do |e|
    [e,opts[:redis].get(OBJ + ":#{id}/#{item}/#{e}")]
  end
end
is_member?(id,opts,item,value) click to toggle source
# File lib/cpee/persistence.rb, line 71
def self::is_member?(id,opts,item,value) #{{{
  opts[:redis].sismember(OBJ + ":#{id}/#{item}",value)
end
keys(id,opts,item=nil) click to toggle source
# File lib/cpee/persistence.rb, line 85
def self::keys(id,opts,item=nil)
  opts[:redis].keys(File.join(OBJ + ":#{id}",item.to_s,'*'))
end
new_object(opts) click to toggle source
# File lib/cpee/persistence.rb, line 81
def self::new_object(opts)
  opts[:redis].zrevrange(OBJ + 's', 0, 0).first.to_i + 1
end
set_handler(id,opts,key,url,values,update=false) click to toggle source
# File lib/cpee/persistence.rb, line 89
def self::set_handler(id,opts,key,url,values,update=false) #{{{
  exis = opts[:redis].smembers(OBJ + ":#{id}/handlers/#{key}")

  if update == false && exis.length > 0
    return 405
  end

  ah = AttributesHelper.new
  attributes = Persistence::extract_list(id,opts,'attributes').to_h
  dataelements = Persistence::extract_list(id,opts,'dataelements').to_h
  endpoints = Persistence::extract_list(id,opts,'endpoints').to_h

  deleted = exis - values

  CPEE::Message::send(
    :event,
    'handler/change',
    opts[:url],
    id,
    Persistence::extract_item(id,opts,'attributes/uuid'),
    Persistence::extract_item(id,opts,'attributes/info'),
    {
      :key => key,
      :url => url,
      :changed => values,
      :deleted => deleted,
      :attributes => ah.translate(attributes,dataelements,endpoints),
    },
    opts[:redis]
  )

  200
end
set_item(id,opts,item,value) click to toggle source
# File lib/cpee/persistence.rb, line 52
def self::set_item(id,opts,item,value) #{{{
  CPEE::Message::send(
    :event,
    File.join(item,'change'),
    opts[:url],
    id,
    Persistence::extract_item(id,opts,'attributes/uuid'),
    Persistence::extract_item(id,opts,'attributes/info'),
    value,
    opts[:redis]
  )
end
set_list(id,opts,item,values,deleted=[]) click to toggle source
# File lib/cpee/persistence.rb, line 20
def self::set_list(id,opts,item,values,deleted=[]) #{{{
  ah = AttributesHelper.new
  attributes = Persistence::extract_list(id,opts,'attributes').to_h
  dataelements = Persistence::extract_list(id,opts,'dataelements').to_h
  endpoints = Persistence::extract_list(id,opts,'endpoints').to_h
  CPEE::Message::send(
    :event,
    File.join(item,'change'),
    opts[:url],
    id,
    Persistence::extract_item(id,opts,'attributes/uuid'),
    Persistence::extract_item(id,opts,'attributes/info'),
    {
      :changed => values.keys,
      :deleted => deleted,
      :values => values,
      :attributes => ah.translate(attributes,dataelements,endpoints),
    },
    opts[:redis]
  )
end