ocean-dynamo 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ocean-dynamo/dynamo.rb +16 -11
- data/lib/ocean-dynamo/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bb66981fe7a08584a0a51f81e8cc458a354cac7
|
4
|
+
data.tar.gz: d3ee6d39bfac9fe8622b91e7e485dbcbca16c8d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4408c7038ebb322f96fd12d65b399f2dc7fdd59708a7f8d13659bba56b4996bb4987e9d052004e7cc0fa35c41e16548364ae87e7df9823adb5d2c03c0dc1ed29
|
7
|
+
data.tar.gz: 29d4cdabc73cd9f84895cd9000c10099f001d56d5bffdfc92d0aab2dee4a4e1b66316e405945f38228814d40224e8ae91aabdcfbc9342da5ab57d51f297d13f5
|
data/lib/ocean-dynamo/dynamo.rb
CHANGED
@@ -240,18 +240,21 @@ module OceanDynamo
|
|
240
240
|
attr_reader :dynamo_item
|
241
241
|
|
242
242
|
|
243
|
-
def initialize(
|
243
|
+
def initialize(attrs={})
|
244
244
|
run_callbacks :initialize do
|
245
245
|
@attributes = HashWithIndifferentAccess.new
|
246
|
-
fields.each do |name,
|
247
|
-
write_attribute(name, evaluate_default(
|
246
|
+
fields.each do |name, md|
|
247
|
+
write_attribute(name, evaluate_default(md[:default], md[:type]))
|
248
248
|
self.class.class_eval "def #{name}; read_attribute('#{name}'); end"
|
249
249
|
self.class.class_eval "def #{name}=(value); write_attribute('#{name}', value); end"
|
250
250
|
if fields[name][:type] == :boolean
|
251
251
|
self.class.class_eval "def #{name}?; read_attribute('#{name}'); end"
|
252
252
|
end
|
253
253
|
end
|
254
|
-
|
254
|
+
if attrs
|
255
|
+
attrs.delete_if { |k, v| !fields.has_key?(k) }
|
256
|
+
end
|
257
|
+
super(attrs)
|
255
258
|
@dynamo_item = nil
|
256
259
|
@destroyed = false
|
257
260
|
@new_record = true
|
@@ -352,8 +355,8 @@ module OceanDynamo
|
|
352
355
|
def deserialize_attribute(value, metadata,
|
353
356
|
type: metadata[:type],
|
354
357
|
default: metadata[:default])
|
355
|
-
if value == nil &&
|
356
|
-
return evaluate_default(default)
|
358
|
+
if value == nil && type != :string
|
359
|
+
return evaluate_default(default, type)
|
357
360
|
end
|
358
361
|
case type
|
359
362
|
when :string
|
@@ -445,7 +448,8 @@ module OceanDynamo
|
|
445
448
|
run_callbacks :commit do
|
446
449
|
run_callbacks :save do
|
447
450
|
run_callbacks :create do
|
448
|
-
|
451
|
+
k = read_attribute(table_hash_key)
|
452
|
+
write_attribute(table_hash_key, SecureRandom.uuid) if k == "" || k == nil
|
449
453
|
t = Time.now
|
450
454
|
self.created_at ||= t
|
451
455
|
self.updated_at ||= t
|
@@ -516,10 +520,11 @@ module OceanDynamo
|
|
516
520
|
|
517
521
|
protected
|
518
522
|
|
519
|
-
def evaluate_default(
|
520
|
-
return
|
521
|
-
return
|
522
|
-
|
523
|
+
def evaluate_default(default, type)
|
524
|
+
return default.call if default.is_a?(Proc)
|
525
|
+
return "" if default == nil && type == :string
|
526
|
+
return default.clone if default.is_a?(Array) || default.is_a?(String) # Instances need their own copy
|
527
|
+
default
|
523
528
|
end
|
524
529
|
|
525
530
|
|
data/lib/ocean-dynamo/version.rb
CHANGED