redis_assist 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/redis_assist/base.rb +50 -35
- data/lib/redis_assist/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7df8d359a12b776a26ea86bf2b593825b5146994
|
4
|
+
data.tar.gz: 010c01a56bb842ca476a528b6b4ea254fa41e7ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 982ea611873442583290d984117e8015c7668b9e884d0f36a2ef915af9af4bedb6bf2abc0b90c52ce039d75e5e021286c388d8866f12c57ff6d8032db3ab2e12
|
7
|
+
data.tar.gz: d55d9df08d606043c4df664b42bfe4ff582cbbeea18e77746236859c1da57bc4dd42b5151cf24493a8616e15d4eafa0e19fc75c695936c08f55b8d5543b18d72
|
data/lib/redis_assist/base.rb
CHANGED
@@ -33,7 +33,7 @@ module RedisAssist
|
|
33
33
|
# Deprecated finds
|
34
34
|
def find_by_id(id, opts={})
|
35
35
|
raw_attributes = load_attributes(id)
|
36
|
-
return nil unless raw_attributes[id]
|
36
|
+
return nil unless raw_attributes[id][:exists].value
|
37
37
|
obj = new(id: id, raw_attributes: raw_attributes[id])
|
38
38
|
(obj.deleted? && !opts[:deleted].eql?(true)) ? nil : obj
|
39
39
|
end
|
@@ -42,8 +42,10 @@ module RedisAssist
|
|
42
42
|
attrs = load_attributes(*ids)
|
43
43
|
raw_attributes = attrs
|
44
44
|
ids.each_with_object([]) do |id, instances|
|
45
|
-
|
46
|
-
|
45
|
+
if raw_attributes[id][:exists].value
|
46
|
+
instance = new(id: id, raw_attributes: raw_attributes[id])
|
47
|
+
instances << instance if instance && (!instance.deleted? || opts[:deleted].eql?(true))
|
48
|
+
end
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
@@ -152,24 +154,16 @@ module RedisAssist
|
|
152
154
|
|
153
155
|
future_fields = pipe.hmget(key_for(id, :attributes), fields.keys)
|
154
156
|
|
155
|
-
futures[id] = {
|
157
|
+
futures[id] = {
|
158
|
+
lists: future_lists,
|
159
|
+
hashes: future_hashes,
|
160
|
+
fields: future_fields,
|
161
|
+
exists: pipe.exists(key_for(id, :attributes))
|
162
|
+
}
|
156
163
|
end
|
157
164
|
end
|
158
165
|
|
159
|
-
|
160
|
-
future_attrs = ids.each_with_object({}) do |id, obj|
|
161
|
-
obj[id] = future_attrs[id] unless future_attrs[id][:fields].value.select{|v| !v.nil? }.empty?
|
162
|
-
end
|
163
|
-
|
164
|
-
# Map futures to attributes
|
165
|
-
future_attrs.each_with_object(attrs) do |kv, obj|
|
166
|
-
lists = kv[1][:lists].each_with_object({}){|kv,obj| obj[kv[0]] = kv[1].value unless kv[1].value.nil? }
|
167
|
-
hashes = kv[1][:hashes].each_with_object({}){|kv,obj| obj[kv[0]] = kv[1].value unless kv[1].value.nil?}
|
168
|
-
fields = Hash[*self.fields.keys.zip(kv[1][:fields].value).flatten]
|
169
|
-
obj[kv[0]] = { lists: lists, hashes: hashes, fields: fields }
|
170
|
-
end
|
171
|
-
|
172
|
-
attrs
|
166
|
+
future_attrs
|
173
167
|
end
|
174
168
|
|
175
169
|
def hash_to_redis(obj)
|
@@ -181,8 +175,13 @@ module RedisAssist
|
|
181
175
|
def define_list(name)
|
182
176
|
define_method(name) do
|
183
177
|
opts = self.class.persisted_attrs[name]
|
184
|
-
|
185
|
-
lists[name]
|
178
|
+
|
179
|
+
if !lists[name] && opts[:default]
|
180
|
+
opts[:default]
|
181
|
+
else
|
182
|
+
send("#{name}=", lists[name].value) if lists[name].is_a?(Redis::Future)
|
183
|
+
lists[name]
|
184
|
+
end
|
186
185
|
end
|
187
186
|
|
188
187
|
define_method("#{name}=") do |val|
|
@@ -194,8 +193,12 @@ module RedisAssist
|
|
194
193
|
def define_hash(name)
|
195
194
|
define_method(name) do
|
196
195
|
opts = self.class.persisted_attrs[name]
|
197
|
-
|
198
|
-
hashes[name]
|
196
|
+
|
197
|
+
if !hashes[name] && opts[:default]
|
198
|
+
opts[:default]
|
199
|
+
else
|
200
|
+
self.send("#{name}=", hashes[name].value)
|
201
|
+
end
|
199
202
|
end
|
200
203
|
|
201
204
|
define_method("#{name}=") do |val|
|
@@ -206,6 +209,11 @@ module RedisAssist
|
|
206
209
|
|
207
210
|
def define_attribute(name)
|
208
211
|
define_method(name) do
|
212
|
+
if attributes.is_a?(Redis::Future)
|
213
|
+
value = attributes.value
|
214
|
+
self.attributes = value ? Hash[*self.class.fields.keys.zip(value).flatten] : {}
|
215
|
+
end
|
216
|
+
|
209
217
|
self.class.transform(:from, name, attributes[name])
|
210
218
|
end
|
211
219
|
|
@@ -223,12 +231,14 @@ module RedisAssist
|
|
223
231
|
self.lists = {}
|
224
232
|
self.hashes = {}
|
225
233
|
|
234
|
+
if attrs[:id]
|
235
|
+
end
|
236
|
+
|
226
237
|
if attrs[:id]
|
227
238
|
self.id = attrs[:id]
|
228
239
|
load_attributes(attrs[:raw_attributes])
|
240
|
+
return self if self.id
|
229
241
|
end
|
230
|
-
|
231
|
-
return self if id
|
232
242
|
|
233
243
|
self.new_record = true
|
234
244
|
|
@@ -259,18 +269,24 @@ module RedisAssist
|
|
259
269
|
redis.multi do
|
260
270
|
# build the arguments to pass to redis hmset
|
261
271
|
# and insure the attributes are explicitely declared
|
262
|
-
|
263
|
-
|
264
|
-
|
272
|
+
|
273
|
+
unless attributes.is_a?(Redis::Future)
|
274
|
+
attribute_args = hash_to_redis(attributes)
|
275
|
+
redis.hmset(key_for(:attributes), *attribute_args)
|
276
|
+
end
|
265
277
|
|
266
278
|
lists.each do |name, val|
|
267
|
-
|
268
|
-
|
279
|
+
if val && !val.is_a?(Redis::Future)
|
280
|
+
redis.del(key_for(name))
|
281
|
+
redis.rpush(key_for(name), val) unless val.empty?
|
282
|
+
end
|
269
283
|
end
|
270
284
|
|
271
285
|
hashes.each do |name, val|
|
272
|
-
|
273
|
-
|
286
|
+
unless val.is_a?(Redis::Future)
|
287
|
+
hash_as_args = hash_to_redis(val)
|
288
|
+
redis.hmset(key_for(name), *hash_as_args)
|
289
|
+
end
|
274
290
|
end
|
275
291
|
end
|
276
292
|
|
@@ -344,10 +360,9 @@ module RedisAssist
|
|
344
360
|
|
345
361
|
def load_attributes(raw_attributes)
|
346
362
|
return nil unless raw_attributes
|
347
|
-
|
348
|
-
self.
|
349
|
-
self.
|
350
|
-
self.attributes = load_response[id][:fields]
|
363
|
+
self.lists = raw_attributes[:lists]
|
364
|
+
self.hashes = raw_attributes[:hashes]
|
365
|
+
self.attributes = raw_attributes[:fields]
|
351
366
|
self.new_record = false
|
352
367
|
end
|
353
368
|
|
data/lib/redis_assist/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_assist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Love
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|