module CPEE::Persistence

Public Class Methods

each_object(opts) { |instance| ... } click to toggle source
# File lib/cpee/persistence.rb, line 81
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 74
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 142
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 139
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 145
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 70
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 52
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 47
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 77
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 102
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 87
def self::new_object(opts)
  id = opts[:redis].zrevrange(@@obj + 's', 0, 0).first.to_i + 1
  opts[:redis].zadd(@@obj + 's',id,id)
  id
end
new_static_object(id,opts) click to toggle source
# File lib/cpee/persistence.rb, line 92
def self::new_static_object(id,opts)
  opts[:redis].set(File.join(@@obj + ":#{id}",'state'),'')
  nil
end
obj() click to toggle source
# File lib/cpee/persistence.rb, line 19
def self::obj #{{{
  @@obj
end
obj=(it) click to toggle source
# File lib/cpee/persistence.rb, line 22
def self::obj=(it) #{{{
  @@obj = it
end
set_handler(id,opts,key,url,values,update=false) click to toggle source
# File lib/cpee/persistence.rb, line 106
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 58
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 26
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.transform_values{|val| JSON::parse(val) rescue val },
      :attributes => ah.translate(attributes,dataelements,endpoints),
    },
    opts[:redis]
  )
end