tiny_dyno 0.1.18 → 0.1.19
Sign up to get free protection for your applications and to get access to all the features.
- 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