ocean-dynamo 0.1.4 → 0.1.5
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 +39 -19
- 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: d38051cf48cd11c7a0dac98fcf9b9428e41d3d13
|
4
|
+
data.tar.gz: bb3df7327933a280a85f5c01214844e65c521c8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1722be5b26ed320e782858b4842eb69aa24e29add54f019575e46fff97ff1a556c922de52390df2a5d6b859db2d6077d833742b852fedbaf938c5c15cfab3899
|
7
|
+
data.tar.gz: 9657f0d36b07e2b2d7ec4a036984dc3305f6121ee57648ac970da2b801e3ff37ffa7c5c98078fa937053619fdc81a96a71ad020090050bd4e7f9c2d09b038b38
|
data/lib/ocean-dynamo/dynamo.rb
CHANGED
@@ -7,7 +7,7 @@ module OceanDynamo
|
|
7
7
|
[:created_at, :datetime],
|
8
8
|
[:updated_at, :datetime],
|
9
9
|
[:lock_version, :integer, default: 0]
|
10
|
-
]
|
10
|
+
].freeze
|
11
11
|
|
12
12
|
class DynamoError < StandardError; end
|
13
13
|
|
@@ -33,20 +33,37 @@ module OceanDynamo
|
|
33
33
|
# ---------------------------------------------------------
|
34
34
|
|
35
35
|
class_attribute :dynamo_client, instance_writer: false
|
36
|
+
self.dynamo_client = nil
|
37
|
+
|
36
38
|
class_attribute :dynamo_table, instance_writer: false
|
39
|
+
self.dynamo_table = nil
|
40
|
+
|
37
41
|
class_attribute :dynamo_items, instance_writer: false
|
42
|
+
self.dynamo_items = nil
|
38
43
|
|
39
44
|
class_attribute :table_name, instance_writer: false
|
45
|
+
self.table_name = nil
|
46
|
+
|
40
47
|
class_attribute :table_name_prefix, instance_writer: false
|
48
|
+
self.table_name_prefix = nil
|
49
|
+
|
41
50
|
class_attribute :table_name_suffix, instance_writer: false
|
51
|
+
self.table_name_suffix = nil
|
42
52
|
|
43
53
|
class_attribute :table_hash_key, instance_writer: false
|
54
|
+
self.table_hash_key = nil
|
55
|
+
|
44
56
|
class_attribute :table_range_key, instance_writer: false
|
57
|
+
self.table_range_key = nil
|
45
58
|
|
46
59
|
class_attribute :table_read_capacity_units, instance_writer: false
|
60
|
+
self.table_read_capacity_units = 10
|
61
|
+
|
47
62
|
class_attribute :table_write_capacity_units, instance_writer: false
|
63
|
+
self.table_write_capacity_units = 5
|
48
64
|
|
49
65
|
class_attribute :fields, instance_writer: false
|
66
|
+
self.fields = nil
|
50
67
|
|
51
68
|
|
52
69
|
def self.set_table_name(name)
|
@@ -72,9 +89,20 @@ module OceanDynamo
|
|
72
89
|
end
|
73
90
|
|
74
91
|
|
92
|
+
#
|
93
|
+
# This is where the class is initialized
|
94
|
+
#
|
75
95
|
def self.primary_key(hash_key, range_key=nil)
|
96
|
+
self.dynamo_client = nil
|
97
|
+
self.dynamo_table = nil
|
98
|
+
self.dynamo_items = nil
|
99
|
+
self.table_name = nil
|
100
|
+
self.table_name_prefix = nil
|
101
|
+
self.table_name_suffix = nil
|
102
|
+
self.fields = HashWithIndifferentAccess.new
|
76
103
|
self.table_hash_key = hash_key
|
77
104
|
self.table_range_key = range_key
|
105
|
+
DEFAULT_FIELDS.each { |k, name, **pairs| field k, name, **pairs }
|
78
106
|
# Find a better place to do the following initialisation:
|
79
107
|
set_table_name compute_table_name unless self.table_name
|
80
108
|
nil
|
@@ -99,7 +127,7 @@ module OceanDynamo
|
|
99
127
|
|
100
128
|
|
101
129
|
def self.establish_db_connection
|
102
|
-
setup_dynamo
|
130
|
+
setup_dynamo
|
103
131
|
if dynamo_table.exists?
|
104
132
|
wait_until_table_is_active
|
105
133
|
else
|
@@ -112,6 +140,9 @@ module OceanDynamo
|
|
112
140
|
def self.setup_dynamo
|
113
141
|
#self.dynamo_client = AWS::DynamoDB::Client.new(:api_version => '2012-08-10')
|
114
142
|
self.dynamo_client ||= AWS::DynamoDB.new
|
143
|
+
|
144
|
+
# TODO Create a non-inherited class accessor (SOLVE THAT PROBLEM!) called dynamo_tables
|
145
|
+
|
115
146
|
self.dynamo_table = dynamo_client.tables[table_full_name]
|
116
147
|
self.dynamo_items = dynamo_table.items
|
117
148
|
end
|
@@ -215,19 +246,6 @@ module OceanDynamo
|
|
215
246
|
define_model_callbacks :touch
|
216
247
|
|
217
248
|
|
218
|
-
# ---------------------------------------------------------
|
219
|
-
#
|
220
|
-
# Class initialisation, done once at load time
|
221
|
-
#
|
222
|
-
# ---------------------------------------------------------
|
223
|
-
|
224
|
-
self.table_read_capacity_units = 10
|
225
|
-
self.table_write_capacity_units = 5
|
226
|
-
|
227
|
-
self.fields = HashWithIndifferentAccess.new
|
228
|
-
DEFAULT_FIELDS.each { |k, name, **pairs| Base.field k, name, **pairs }
|
229
|
-
|
230
|
-
|
231
249
|
# ---------------------------------------------------------
|
232
250
|
#
|
233
251
|
# Instance variables and methods
|
@@ -251,15 +269,17 @@ module OceanDynamo
|
|
251
269
|
self.class.class_eval "def #{name}?; read_attribute('#{name}'); end"
|
252
270
|
end
|
253
271
|
end
|
254
|
-
|
255
|
-
attrs.delete_if { |k, v| !fields.has_key?(k) }
|
256
|
-
end
|
257
|
-
super(attrs)
|
272
|
+
|
258
273
|
@dynamo_item = nil
|
259
274
|
@destroyed = false
|
260
275
|
@new_record = true
|
261
276
|
raise NoPrimaryKeyDeclared unless table_hash_key
|
262
277
|
end
|
278
|
+
|
279
|
+
if attrs
|
280
|
+
attrs.delete_if { |k, v| !fields.has_key?(k) }
|
281
|
+
end
|
282
|
+
super(attrs)
|
263
283
|
end
|
264
284
|
|
265
285
|
|
data/lib/ocean-dynamo/version.rb
CHANGED