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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46edd795c299649097dd995e9bafe6798acbadba
4
- data.tar.gz: 65c18b06c46db96b1e6c8045a0f7f0fa7598c15a
3
+ metadata.gz: 9067dea5947eebd4d2863cc818c600580e7defbf
4
+ data.tar.gz: 8c6d8737297deed27c5ac6338bdd72e0f42e8ed6
5
5
  SHA512:
6
- metadata.gz: 9810309f84cc71ef4c232351ebf4f966e0fdefd46e4dde29215a3cd8f6b36e4090439c78d238572818e7f5d2105f216a24ab3461794f7bcf2477b72ee3a2f21a
7
- data.tar.gz: 781f989e07ac91dda6dfdc8f7cf0a3abb75ed09a817ce89ce02930fec49fb9ae0a579c2eb72a86965923faeb9ef4517519e00ce9aadcf0c7acf0d1ca27774603
6
+ metadata.gz: 76148078a22a31259f34bd79739fb11a8eb802301621ed36f4f8f6136eb753eecf9c1a022a974a80f80ece3d81d20878783f1c3d4e51de1a083f08b1635a0481
7
+ data.tar.gz: c1aacda3deed812850d722de5b531d1b31cf13abcc31a2314d0264deff8c928d6e1c26f65d2d64fa0b009bf7fb50a63e10e474746d5c323f6f5023e2c0e3fb0a
data/CHANGES.md CHANGED
@@ -1,3 +1,8 @@
1
+ 0.1.19 (2015-09-09)
2
+ -------------------
3
+
4
+ * New/Fix - support deletion of documents with range key
5
+
1
6
  0.1.18 (2015-09-09)
2
7
  -------------------
3
8
 
@@ -46,7 +46,7 @@ module TinyDyno
46
46
  def request_delete
47
47
  request = {
48
48
  table_name: self.class.table_name,
49
- key: hash_key_as_selector
49
+ key: keys_as_selector
50
50
  }
51
51
  TinyDyno::Adapter.delete_item(request: request)
52
52
  end
@@ -20,7 +20,7 @@ module TinyDyno
20
20
  # @since 3.0.0
21
21
  def initialize(name, options = {})
22
22
  @name = name
23
- @options = options
23
+ @options = options.merge(range_key: true)
24
24
  @label = options[:label]
25
25
  @default_val = options[:default]
26
26
  @type = options[:type]
@@ -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
- attribute_definitions << build_attribute_definition(named,options[:type])
167
- key_schema << { attribute_name: named, key_type: 'RANGE' }
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)
@@ -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 hash_key_as_selector
18
- key_field = self.class.primary_key[:attr]
19
- { "#{ self.class.primary_key[:attr] }": TinyDyno::Adapter.aws_attribute(field_type: fields[key_field].options[:type], value: attributes[key_field]) }
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) }
@@ -1,3 +1,3 @@
1
1
  module TinyDyno
2
- VERSION = '0.1.18'
2
+ VERSION = '0.1.19'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_dyno
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.18
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Gerschner