dynamodb_helpers 0.2.0 → 0.3.0

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: 29c20443dd559e7466b424511888b5cd689042c6
4
- data.tar.gz: 106fb0bf1cf2e334c536cbcd72ab3c891c44792c
3
+ metadata.gz: 799b8b0b74b057cd60136e9edff897f0d1ef2689
4
+ data.tar.gz: 57a56363cf62f42625b1456965c0dc3dd2757275
5
5
  SHA512:
6
- metadata.gz: 8d3d856506e490c57bd7d443a15520ef7bf8e0a1455182ed50e59cb19d45cb86ad620c1fc6a2b6a4576e0a893aa681a73afa2e4f4126917469086fa23144ed92
7
- data.tar.gz: 4fc0d8703991a0de17b0c1b123dfd76615d218dce4d17784aabcf8ec178149c0a47141dd19e852a6a0724ad04776d869c92a52bff3a47585da49eb0fb157a815
6
+ metadata.gz: e55d62e619c0e7282d3195d3e4790116147763e66638abb3d3cca8c2cbd16b60eea3ea48955d4f0cefccaa31bb627bd94658f26fc8e49f45ccb4151e9fdf1d38
7
+ data.tar.gz: ffedaaca92f9f7dc83f6a0960ca422ae29638144a290079ed6262e8ed6053faf301d2ff96aa86d75a95d9b08809b1ade5a79d48d5b4f1fc0fd750931005fe271
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ .DS_Store
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
data/Gemfile.lock CHANGED
@@ -1,23 +1,25 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dynamodb_helpers (0.1.0)
4
+ dynamodb_helpers (0.3.0)
5
5
  aws-sdk-dynamodb (>= 1.2.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- aws-partitions (1.27.0)
11
- aws-sdk-core (3.6.0)
10
+ aws-eventstream (1.0.0)
11
+ aws-partitions (1.91.0)
12
+ aws-sdk-core (3.21.2)
13
+ aws-eventstream (~> 1.0)
12
14
  aws-partitions (~> 1.0)
13
15
  aws-sigv4 (~> 1.0)
14
16
  jmespath (~> 1.0)
15
- aws-sdk-dynamodb (1.2.0)
17
+ aws-sdk-dynamodb (1.6.0)
16
18
  aws-sdk-core (~> 3)
17
19
  aws-sigv4 (~> 1.0)
18
20
  aws-sigv4 (1.0.2)
19
21
  diff-lcs (1.3)
20
- jmespath (1.3.1)
22
+ jmespath (1.4.0)
21
23
  rake (10.5.0)
22
24
  rspec (3.7.0)
23
25
  rspec-core (~> 3.7.0)
@@ -43,4 +45,4 @@ DEPENDENCIES
43
45
  rspec (~> 3.0)
44
46
 
45
47
  BUNDLED WITH
46
- 1.16.0
48
+ 1.16.1
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # DynamoDB helpers
2
2
 
3
3
  Currently only the scan finder is implemented. It will issue multiple scans for each 1MB and combine them into a single result.
4
- Dataset returned is a plain ruby hash which gives you significant speed-up if you are only interested in reading the data.
4
+ Dataset returned is a plain ruby hash which gives you significant speed-up over aws-record gem if you are only interested in reading the data.
5
5
 
6
6
  ## Installation
7
7
 
@@ -23,7 +23,10 @@ Or install it yourself as:
23
23
 
24
24
 
25
25
  ```ruby
26
- # extend your class and provide table_name method
26
+ # Instantiate the client which will require table_name option on each call
27
+ DynamoClient = Class.new.extend(DynamodbHelpers)
28
+
29
+ # or extend your class and provide table_name method
27
30
  class User
28
31
  extend DynamodbHelpers
29
32
 
@@ -34,7 +37,11 @@ end
34
37
 
35
38
  # Find by multiple keys:
36
39
  User.scan_and_find_by(name: 'Joe', email: 'joe@example.com')
37
- # => {"name" => "Joe", "email" => "joe@example.com", ... other attributes}
40
+ # => [{"name" => "Joe", "email" => "joe@example.com", ... other attributes}, ...]
41
+
42
+ # Return specific fields:
43
+ User.scan_and_find_by({name: 'Joe', email: 'joe@example.com'}, select: [:email])
44
+ # => [{"email" => "joe@example.com"}, ...]
38
45
 
39
46
  # Find by scanning in parallel with multiple threads:
40
47
  User.scan_and_find_by({name: 'Joe'}, segments: 5)
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "rake", "~> 10.0"
26
26
  spec.add_development_dependency "rspec", "~> 3.0"
27
27
 
28
- # spec.add_dependency "aws-sdk-dynamodb", ">= 1.2.0"
28
+ spec.add_dependency "aws-sdk-dynamodb", ">= 1.2.0"
29
29
  # spec.add_dependency "aws-sdk", "~> 2.0"
30
30
  end
@@ -1,11 +1,15 @@
1
1
  require "dynamodb_helpers/version"
2
2
 
3
3
  module DynamodbHelpers
4
- def scan_and_find_by(query_opts, opts = {segments: false})
5
- query = {table_name: table_name, select: 'ALL_ATTRIBUTES', scan_filter: {}}
4
+ def scan_and_find_by(query_opts, opts = {segments: false, select: false, table_name: false})
5
+
6
+ query = {table_name: opts[:table_name] ? opts[:table_name] : self.table_name, select: 'ALL_ATTRIBUTES', scan_filter: {}}
6
7
 
7
8
  query_opts.each do | key, value |
8
- if(!value.nil?)
9
+ if value.nil?
10
+ # raise "Detected nil value for #{key}"
11
+ return []
12
+ else
9
13
  query[:scan_filter].merge!(key.to_s => {:comparison_operator => "EQ", :attribute_value_list => [value]})
10
14
  end
11
15
  end
@@ -14,6 +18,9 @@ module DynamodbHelpers
14
18
  query.merge!(:conditional_operator => "AND")
15
19
  end
16
20
 
21
+ # field selection
22
+ query.merge!(select: "SPECIFIC_ATTRIBUTES", attributes_to_get: opts[:select]) if opts[:select]
23
+
17
24
  return scan_in_parallel(query, opts) if opts[:segments]
18
25
  return scan_sequentialy(query)
19
26
  end
@@ -1,3 +1,3 @@
1
1
  module DynamodbHelpers
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamodb_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damir Roso
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-17 00:00:00.000000000 Z
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: aws-sdk-dynamodb
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.2.0
55
69
  description: Lightweight wrapper for some aws-sdk-dynamodb features
56
70
  email:
57
71
  - damir.roso@nih.gov
@@ -93,9 +107,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
107
  version: '0'
94
108
  requirements: []
95
109
  rubyforge_project:
96
- rubygems_version: 2.6.11
110
+ rubygems_version: 2.6.14.1
97
111
  signing_key:
98
112
  specification_version: 4
99
113
  summary: Utility methods for dynamodb
100
114
  test_files: []
101
- has_rdoc: