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

}}}



81
82
83
84
85
# 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) ⇒ Boolean

}}}

Returns:

  • (Boolean)


74
75
76
# File 'lib/cpee/persistence.rb', line 74

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

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

}}}

Returns:

  • (Boolean)


142
143
144
# 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) ⇒ Object

}}}



139
140
141
# 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) ⇒ Object

}}}



145
146
147
148
149
# 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) ⇒ Object

}}}



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

}}}



52
53
54
55
56
# 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) ⇒ Object

}}}



47
48
49
50
51
# 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) ⇒ Boolean

}}}

Returns:

  • (Boolean)


77
78
79
# 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) ⇒ Object



102
103
104
# 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) ⇒ Object



87
88
89
90
91
# 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) ⇒ Object



92
93
94
95
# File 'lib/cpee/persistence.rb', line 92

def self::new_static_object(id,opts)
  opts[:redis].set(File.join(@@obj + ":#{id}",'state'),'')
  nil
end

.objObject

{{{



19
20
21
# File 'lib/cpee/persistence.rb', line 19

def self::obj #{{{
  @@obj
end

.obj=(it) ⇒ Object

}}}



22
23
24
# File 'lib/cpee/persistence.rb', line 22

def self::obj=(it) #{{{
  @@obj = it
end

.set_handler(id, opts, key, url, values, update = false) ⇒ Object

{{{



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# 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) ⇒ Object

}}}



58
59
60
61
62
63
64
65
66
67
68
69
# 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 = []) ⇒ Object

}}}



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 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