dynamo_record 0.0.19 → 0.0.20

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: 2dd63307555e1ae2fe549ff6881afac14b7967bc
4
- data.tar.gz: bf8bdd27acfe11301789f1de5410eb7157aded69
3
+ metadata.gz: 9b849c11bb6edf1b5b8253df1fa040d92c69775b
4
+ data.tar.gz: 42857a91944bda388c706c89cf250274b76a7f76
5
5
  SHA512:
6
- metadata.gz: c0ea8f49c85a9a7ab830491a6c3d010688cb0f4607bf6efb25bd44188fbb22922979d945f673f229bd4c4b1d45aa07d970fd29e9534340d149a2adc6f4c8c642
7
- data.tar.gz: 2223d8a200ac4d0f5518dcb0a6fffc6dabd816f72aff59ad016874d0c10e0d09b4e7e94365fff57168e2c117fb24dde90199495bcfc56a178ffc9b20f59e0d00
6
+ metadata.gz: 6d5886affd59ca355e02fb40b92eee7cc4ea74846eeb7e7c81c64217bc8dcb1beb283d6776a7b0adc27996ce62a452f6561b7a3af19887cd054dcd3e7166dbdc
7
+ data.tar.gz: 2a5f30c5918971220cd20b99d22ed5ceb324418b4429c11ab5c13ec903e1177372f862143d6177cc7146b16ce30dee6e056dc90617764dbb4579616a666b3336
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ .env
@@ -70,9 +70,9 @@ module DynamoRecord
70
70
  end
71
71
  end
72
72
 
73
- # def hash_key
74
- # @hash_key ||= self.attributes.select { |k,v| v[:options][:hash_key] }.keys.first rescue nil
75
- # end
73
+ def hash_key
74
+ :id # default hash key
75
+ end
76
76
 
77
77
  def range_key
78
78
  @range_key ||= self.attributes.select { |k,v| v[:options][:range_key] }.keys.first rescue nil
@@ -17,6 +17,7 @@ module DynamoRecord
17
17
  key_conditions = {}
18
18
  key_conditions[attribute] = { attribute_value_list: [value],
19
19
  comparison_operator: 'EQ' }
20
+
20
21
  index_name = "#{attribute}-index"
21
22
  options = self.default_options
22
23
  options.merge!(key_conditions: key_conditions, index_name: index_name)
@@ -24,6 +25,22 @@ module DynamoRecord
24
25
  response = self.client.query(options)
25
26
  DynamoRecord::Collection.new(response, self)
26
27
  end
28
+
29
+ def find_by_hash_and_range(hash_key, range_key=nil)
30
+ key_conditions = {}
31
+ key_conditions[self.hash_key] = { attribute_value_list: [hash_key],
32
+ comparison_operator: 'EQ' }
33
+ if range_key
34
+ key_conditions[self.range_key] = { attribute_value_list: [range_key],
35
+ comparison_operator: 'EQ' }
36
+ end
37
+
38
+ options = self.default_options
39
+ options.merge!(key_conditions: key_conditions)
40
+
41
+ response = self.client.query(options)
42
+ DynamoRecord::Collection.new(response, self)
43
+ end
27
44
  end
28
45
  end
29
46
  end
@@ -1,3 +1,3 @@
1
1
  module DynamoRecord
2
- VERSION = "0.0.19"
2
+ VERSION = "0.0.20"
3
3
  end
@@ -42,6 +42,19 @@ RSpec.describe DynamoRecord::Query, :vcr do
42
42
  end
43
43
 
44
44
  describe 'querying' do
45
+
46
+ describe '#find_by_hash_and_range' do
47
+ it 'returns a record by hash key and range key' do
48
+ person = PersonRange.find_by_hash_and_range('1', '2015-01-28T14:37:01+08:00')
49
+ expect(person.count).to eq(1)
50
+ end
51
+
52
+ it 'returns all records by hash key' do
53
+ people = PersonRange.find_by_hash_and_range('1')
54
+ expect(people.count).to eq(2)
55
+ end
56
+ end
57
+
45
58
  describe '#where' do
46
59
  it 'queries by condition' do
47
60
  people = Person.where(name: 'Person 2')
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://dynamodb.us-east-1.amazonaws.com/
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"TableName":"person_ranges","KeyConditions":{"id":{"AttributeValueList":[{"S":"1"}],"ComparisonOperator":"EQ"},"created_at":{"AttributeValueList":[{"S":"2015-01-28T14:37:01+08:00"}],"ComparisonOperator":"EQ"}}}'
9
+ headers:
10
+ Content-Type:
11
+ - application/x-amz-json-1.0
12
+ Accept-Encoding:
13
+ - ''
14
+ User-Agent:
15
+ - aws-sdk-ruby2/2.0.21 ruby/2.1.2 x86_64-darwin14.0
16
+ X-Amz-Target:
17
+ - DynamoDB_20120810.Query
18
+ X-Amz-Date:
19
+ - 20150130T064846Z
20
+ X-Amz-Content-Sha256:
21
+ - cb65882116db16faf18fa6cfb02eb793e9952156441a23509c56b3dcc37abd33
22
+ Authorization:
23
+ - AWS4-HMAC-SHA256 Credential=key/20150130/us-east-1/dynamodb/aws4_request,
24
+ SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target,
25
+ Signature=499914a63276dd30775dfba66cfde46cc359679fdc6434d9bcdfe7193e487720
26
+ Content-Length:
27
+ - '211'
28
+ Accept:
29
+ - "*/*"
30
+ response:
31
+ status:
32
+ code: 200
33
+ message: OK
34
+ headers:
35
+ X-Amzn-Requestid:
36
+ - GN2UG13P0SNIKC2RF5OKIH5JTJVV4KQNSO5AEMVJF66Q9ASUAAJG
37
+ X-Amz-Crc32:
38
+ - '4076139363'
39
+ Content-Type:
40
+ - application/x-amz-json-1.0
41
+ Content-Length:
42
+ - '102'
43
+ Date:
44
+ - Fri, 30 Jan 2015 06:48:48 GMT
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"Count":1,"Items":[{"created_at":{"S":"2015-01-28T14:37:01+08:00"},"id":{"S":"1"}}],"ScannedCount":1}'
48
+ http_version:
49
+ recorded_at: Fri, 30 Jan 2015 06:48:49 GMT
50
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://dynamodb.us-east-1.amazonaws.com/
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"TableName":"person_ranges","KeyConditions":{"id":{"AttributeValueList":[{"S":"1"}],"ComparisonOperator":"EQ"}}}'
9
+ headers:
10
+ Content-Type:
11
+ - application/x-amz-json-1.0
12
+ Accept-Encoding:
13
+ - ''
14
+ User-Agent:
15
+ - aws-sdk-ruby2/2.0.21 ruby/2.1.2 x86_64-darwin14.0
16
+ X-Amz-Target:
17
+ - DynamoDB_20120810.Query
18
+ X-Amz-Date:
19
+ - 20150130T064849Z
20
+ X-Amz-Content-Sha256:
21
+ - f04e6fb149222c33132f14b3dd507d21d3deae8d7d2458d4bfd9466dfc628bbb
22
+ Authorization:
23
+ - AWS4-HMAC-SHA256 Credential=key/20150130/us-east-1/dynamodb/aws4_request,
24
+ SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target,
25
+ Signature=24eb78d623265f915ae3567662a823c5ad3401f27a63467a96a7a6d4eb3dc042
26
+ Content-Length:
27
+ - '113'
28
+ Accept:
29
+ - "*/*"
30
+ response:
31
+ status:
32
+ code: 200
33
+ message: OK
34
+ headers:
35
+ X-Amzn-Requestid:
36
+ - 3PN8EO8AOFQ287VT9AB45UUPV7VV4KQNSO5AEMVJF66Q9ASUAAJG
37
+ X-Amz-Crc32:
38
+ - '2876920674'
39
+ Content-Type:
40
+ - application/x-amz-json-1.0
41
+ Content-Length:
42
+ - '166'
43
+ Date:
44
+ - Fri, 30 Jan 2015 06:48:49 GMT
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"Count":2,"Items":[{"created_at":{"S":"2015-01-28T14:37:01+08:00"},"id":{"S":"1"}},{"created_at":{"S":"2015-01-29T14:36:59+08:00"},"id":{"S":"1"}}],"ScannedCount":2}'
48
+ http_version:
49
+ recorded_at: Fri, 30 Jan 2015 06:48:50 GMT
50
+ recorded_with: VCR 2.9.3
data/spec/spec_helper.rb CHANGED
@@ -13,6 +13,6 @@ VCR.configure do |c|
13
13
  end
14
14
 
15
15
  DynamoRecord.configure do |config|
16
- config.access_key_id = 'key'
17
- config.secret_access_key = 'secret'
16
+ config.access_key_id = ENV['DYNAMODB_KEY'] || 'key'
17
+ config.secret_access_key = ENV['DYNAMODB_SECRET'] || 'secret'
18
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamo_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nguyen Vu Nguyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-29 00:00:00.000000000 Z
11
+ date: 2015-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -161,6 +161,8 @@ files:
161
161
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/_all/pagination/navigates_to_next_page.yml
162
162
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/_all/pagination/tells_if_there_is_a_next_page.yml
163
163
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/_query/queries_by_condition.yml
164
+ - spec/fixtures/vcr_cassettes/DynamoRecord_Query/querying/_find_by_hash_and_range/returns_a_record_by_hash_key_and_range_key.yml
165
+ - spec/fixtures/vcr_cassettes/DynamoRecord_Query/querying/_find_by_hash_and_range/returns_all_records_by_hash_key.yml
164
166
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/querying/_where/queries_by_condition.yml
165
167
  - spec/spec_helper.rb
166
168
  homepage: https://github.com/yetanothernguyen/dynamo_record
@@ -219,5 +221,7 @@ test_files:
219
221
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/_all/pagination/navigates_to_next_page.yml
220
222
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/_all/pagination/tells_if_there_is_a_next_page.yml
221
223
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/_query/queries_by_condition.yml
224
+ - spec/fixtures/vcr_cassettes/DynamoRecord_Query/querying/_find_by_hash_and_range/returns_a_record_by_hash_key_and_range_key.yml
225
+ - spec/fixtures/vcr_cassettes/DynamoRecord_Query/querying/_find_by_hash_and_range/returns_all_records_by_hash_key.yml
222
226
  - spec/fixtures/vcr_cassettes/DynamoRecord_Query/querying/_where/queries_by_condition.yml
223
227
  - spec/spec_helper.rb