ocean-dynamo 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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