tiny_dyno 0.1.18 → 0.1.19
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/CHANGES.md +5 -0
- data/lib/tiny_dyno/document.rb +1 -1
- data/lib/tiny_dyno/fields/range_key.rb +1 -1
- data/lib/tiny_dyno/fields.rb +5 -3
- data/lib/tiny_dyno/hash_key.rb +12 -4
- data/lib/tiny_dyno/persistable.rb +0 -8
- data/lib/tiny_dyno/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: 9067dea5947eebd4d2863cc818c600580e7defbf
|
4
|
+
data.tar.gz: 8c6d8737297deed27c5ac6338bdd72e0f42e8ed6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76148078a22a31259f34bd79739fb11a8eb802301621ed36f4f8f6136eb753eecf9c1a022a974a80f80ece3d81d20878783f1c3d4e51de1a083f08b1635a0481
|
7
|
+
data.tar.gz: c1aacda3deed812850d722de5b531d1b31cf13abcc31a2314d0264deff8c928d6e1c26f65d2d64fa0b009bf7fb50a63e10e474746d5c323f6f5023e2c0e3fb0a
|
data/CHANGES.md
CHANGED
data/lib/tiny_dyno/document.rb
CHANGED
data/lib/tiny_dyno/fields.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'tiny_dyno/fields/standard'
|
2
2
|
require 'tiny_dyno/fields/range_key'
|
3
|
-
require 'tracer'
|
4
3
|
|
5
4
|
module TinyDyno
|
6
5
|
module Fields
|
@@ -163,8 +162,11 @@ module TinyDyno
|
|
163
162
|
opts = options.merge(klass: self)
|
164
163
|
if opts.has_key?(:range_key) && opts[:range_key] == true
|
165
164
|
named = name.to_s
|
166
|
-
|
167
|
-
|
165
|
+
ad = build_attribute_definition(named,opts[:type])
|
166
|
+
attribute_definitions << ad
|
167
|
+
ks = { attribute_name: named, key_type: 'RANGE' }
|
168
|
+
key_schema << ks
|
169
|
+
self.range_key = ks.merge(ad)
|
168
170
|
Fields::RangeKey.new(name, opts)
|
169
171
|
else
|
170
172
|
Fields::Standard.new(name, opts)
|
data/lib/tiny_dyno/hash_key.rb
CHANGED
@@ -3,20 +3,28 @@ module TinyDyno
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
class_attribute :attribute_definitions, :key_schema, :primary_key
|
6
|
+
class_attribute :attribute_definitions, :key_schema, :primary_key, :range_key
|
7
7
|
|
8
8
|
# TODO :local_secondary_indexes, :global_secondary_indexes
|
9
9
|
self.attribute_definitions ||= []
|
10
10
|
self.key_schema ||= []
|
11
11
|
self.primary_key ||= {}
|
12
|
+
self.range_key ||= {}
|
12
13
|
end
|
13
14
|
|
14
15
|
# return all defined hash keys on an instantiated object
|
15
16
|
# for further use in DynamoDB queries, i.e. to look up an object
|
16
17
|
#
|
17
|
-
def
|
18
|
-
|
19
|
-
|
18
|
+
def keys_as_selector
|
19
|
+
selector = {}
|
20
|
+
primary_key_field = self.class.primary_key[:attr]
|
21
|
+
selector[primary_key_field.to_sym] = TinyDyno::Adapter.aws_attribute(field_type: fields[primary_key_field].options[:type], value: attributes[primary_key_field])
|
22
|
+
unless range_key.empty?
|
23
|
+
range_key_field = self.class.range_key[:attribute_name]
|
24
|
+
selector[range_key_field.to_sym] = TinyDyno::Adapter.aws_attribute(field_type: fields[range_key_field].options[:type], value: attributes[range_key_field])
|
25
|
+
end
|
26
|
+
return nil if selector.empty?
|
27
|
+
selector
|
20
28
|
end
|
21
29
|
|
22
30
|
module ClassMethods
|
@@ -40,14 +40,6 @@ module TinyDyno
|
|
40
40
|
}
|
41
41
|
end
|
42
42
|
|
43
|
-
# def build_update_item_request
|
44
|
-
# {
|
45
|
-
# key: hash_key_as_selector,
|
46
|
-
# table_name: self.class.table_name,
|
47
|
-
# attribute_updates: build_attribute_updates
|
48
|
-
# }
|
49
|
-
# end
|
50
|
-
|
51
43
|
def build_item_request_entries
|
52
44
|
item_entries = {}
|
53
45
|
attributes.each { |k,v| item_entries[k] = TinyDyno::Adapter.aws_attribute(field_type: fields[k].options[:type], value: v) }
|
data/lib/tiny_dyno/version.rb
CHANGED