Module: CPEE::Persistence

Defined in:
lib/cpee/persistence.rb

Constant Summary collapse

OBJ =
'instance'

Class Method Summary collapse

Class Method Details

.each_object(opts) ⇒ Object

}}}



75
76
77
78
79
# 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) ⇒ Boolean

}}}

Returns:

  • (Boolean)


68
69
70
# File 'lib/cpee/persistence.rb', line 68

def self::exists?(id,opts) #{{{
  opts[:redis].exists?(OBJ + ":#{id}/state")
end

.exists_handler?(id, opts, key) ⇒ Boolean

}}}

Returns:

  • (Boolean)


125
126
127
# 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) ⇒ Object

}}}



122
123
124
# 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) ⇒ Object

}}}



128
129
130
131
132
# 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) ⇒ Object

}}}



64
65
66
# 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) ⇒ Object

}}}



46
47
48
49
50
# 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) ⇒ Object

}}}



41
42
43
44
45
# 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) ⇒ Boolean

}}}

Returns:

  • (Boolean)


71
72
73
# 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) ⇒ Object



85
86
87
# 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) ⇒ Object



81
82
83
# 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) ⇒ Object

{{{



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# 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) ⇒ Object

}}}



52
53
54
55
56
57
58
59
60
61
62
63
# 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 = []) ⇒ Object

{{{



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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.transform_values{|val| JSON::parse(val) rescue val },
      :attributes => ah.translate(attributes,dataelements,endpoints),
    },
    opts[:redis]
  )
end