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 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