tiny_dyno 0.1.12 → 0.1.13

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: 042ea3b53fd10c8a3a6b8ab228d568e501b1b843
4
- data.tar.gz: 5222389a219e25dc9a40b88a6ed748e54fb381d3
3
+ metadata.gz: f25a0b7a5a279763fa26f9086fb37804bb105e46
4
+ data.tar.gz: 0cd3addc209d7de1782c736aee2334a9070ef785
5
5
  SHA512:
6
- metadata.gz: 051dabb980854bc99bcb736ea43bea31df12c0eecdbf5e848c5e40f1a20e5bc6b8338e4239b218552597fb0929bfd1c1e427850e6ca1495d9315e45f77df47e5
7
- data.tar.gz: 7df845254448752c5eb6c16ea6d1ed7fa954adc55b2dbe69e11fba1b5f47f024d01508cf6b5277b2fc1a871c297cb9ddeb240462be3d06de5b94ec7b64c74ad7
6
+ metadata.gz: 9206f02ceb2088dd6d95c8a7539adbbd0541f668ccf4b40f06097aff3238cdb95e265efa4755d224f9cb19f0efbe63784f5e3c869958c0ea8fa846d8fd4f6471
7
+ data.tar.gz: 595bb39ad21dbd37ac20e8e883320dfde768bb75443b889a0323a5dcbaa24f760a2c070a2cfab48093b0d23d1a265e5247287a103886823d7d802c7bb8562da6
data/CHANGES.md CHANGED
@@ -1,3 +1,8 @@
1
+ 0.1.13 (2015-07-06)
2
+ -------------------
3
+
4
+ * Fix - return nil (not false), when a .where lookup does not match a document
5
+
1
6
  0.1.12 (2015-07-04)
2
7
  -------------------
3
8
 
@@ -59,7 +59,7 @@ module TinyDyno
59
59
  get_query = build_where_query(options)
60
60
  attributes = TinyDyno::Adapter.get_item(get_item_request: get_query)
61
61
  if attributes.nil?
62
- return false
62
+ return nil
63
63
  else
64
64
  record = self.new(attributes)
65
65
  record.instance_variable_set(:@new_record, false)
@@ -1,3 +1,3 @@
1
1
  module TinyDyno
2
- VERSION = '0.1.12'
2
+ VERSION = '0.1.13'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_dyno
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Gerschner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-05 00:00:00.000000000 Z
11
+ date: 2015-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -193,7 +193,6 @@ files:
193
193
  - lib/tiny_dyno/fields/range_key.rb
194
194
  - lib/tiny_dyno/fields/standard.rb
195
195
  - lib/tiny_dyno/hash_key.rb
196
- - lib/tiny_dyno/hash_keys.rb
197
196
  - lib/tiny_dyno/loggable.rb
198
197
  - lib/tiny_dyno/persistable.rb
199
198
  - lib/tiny_dyno/stateful.rb
@@ -1,134 +0,0 @@
1
- module TinyDyno
2
- module HashKeys
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- class_attribute :attribute_definitions, :key_schema, :hash_keys
7
-
8
- # TODO :local_secondary_indexes, :global_secondary_indexes
9
- self.attribute_definitions = []
10
- self.key_schema = []
11
- self.hash_keys = []
12
- @hash_key_fields = []
13
-
14
- end
15
-
16
- # return all defined hash keys on an instantiated object
17
- # for further use in DynamoDB queries
18
- #
19
- def hash_key_as_selector
20
- selector = {}
21
- self.class.hash_keys.each { |hk| selector[hk[:attr]] = attributes[hk[:attr]] }
22
- selector
23
- end
24
-
25
- module ClassMethods
26
-
27
- # Return true/false, depending on whether the provided argument
28
- # matches a defined hash key for this document model
29
- # @example Hash key is defined?
30
- # Person.hash_key_is_defined?(:id)
31
- #
32
- # @param [ String ] name, the name of the hash key
33
- # @return [ Boolean ] True, False
34
- def hash_key_is_defined?(arg = nil)
35
- @hash_key_fields.include?(arg)
36
- end
37
-
38
- # return the attribute_type as stored in the attribute_definitions
39
- def lookup_attribute_type(attribute_name)
40
- type = attribute_definitions.collect {|a| a[:attribute_type] if a[:attribute_name] == attribute_name }
41
- type.first
42
- end
43
-
44
- # Defines all the fields that are accessible on the Document
45
- # For each field that is defined, a getter and setter will be
46
- # added as an instance method to the Document.
47
- #
48
- # @example Define a field.
49
- # field :score, :type => Integer, :default => 0
50
- #
51
- # @param [ Symbol ] name The name of the field.
52
- # @param [ Hash ] options The options to pass to the field.
53
- #
54
- # @option options [ Class ] :type The type of the field.
55
- # @option options [ String ] :label The label for the field.
56
- # @option options [ Object, Proc ] :default The field's default
57
- #
58
- # @return [ Field ] The generated field
59
- def hash_key(name, options = {})
60
- named = name.to_s
61
- attribute_definition = build_attribute_definition(named,options[:type])
62
- key_schema = build_key_schema(named)
63
- unless attribute_definition_meets_spec?(attribute_definition)
64
- raise TinyDyno::Errors::InvalidHashKey.new(klass: self.class, name: name)
65
- end
66
- # we need the accessors as well
67
- add_field(named, options)
68
- self.attribute_definitions << attribute_definition
69
- self.key_schema << key_schema
70
- # TODO
71
- # should separate that out
72
- self.hash_keys << {
73
- attr: attribute_definition[:attribute_name],
74
- attr_type: attribute_definition[:attribute_type],
75
- key_type: key_schema[:key_type],
76
- }
77
- @hash_key_fields << attribute_definition[:attribute_name]
78
- end
79
-
80
- # convert a hash key into a format as expected by
81
- # put_item and update_item request
82
- def as_item_entry(hash_key)
83
-
84
- end
85
-
86
- private
87
-
88
- # Return true or false, depending on whether the attribute_definitions on the model
89
- # meet the specification of the Aws Sdk
90
- # This is a syntax, not a logic check
91
- def attribute_definitions_meet_spec?
92
- attribute_definitions.each do |definition|
93
- return false unless attribute_definition_meets_spec?(definition)
94
- end
95
- end
96
-
97
- def attribute_definition_meets_spec?(definition)
98
- return (definition.has_key?(:attribute_name) && \
99
- definition.has_key?(:attribute_type) && \
100
- definition[:attribute_name].class == String && \
101
- definition[:attribute_type].class == String && \
102
- ['S','N', 'B'].include?(definition[:attribute_type]))
103
- end
104
-
105
- def build_attribute_definition(name, key_type)
106
- {
107
- attribute_name: name,
108
- attribute_type: hash_key_type(key_type)
109
- }
110
- end
111
-
112
- def hash_key_type(key_type = nil)
113
- return 'S' if key_type == String
114
- return 'N' if key_type == Fixnum or key_type == Integer
115
- return nil
116
- end
117
-
118
- def build_key_schema(name)
119
- {
120
- attribute_name: name,
121
- key_type: 'HASH'
122
- }
123
- end
124
-
125
- # convert values in queries to DynamoDB
126
- # into types as expected by DynamoDB
127
- def dyno_typed_key(key:, val:)
128
- typed_class = self.fields[key].options[:type]
129
- return (document_typed(klass: typed_class, value: val))
130
- end
131
-
132
- end
133
- end
134
- end