rom-elasticsearch 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +24 -0
  5. data/.yardopts +7 -0
  6. data/CHANGELOG.md +3 -0
  7. data/CONTRIBUTING.md +29 -0
  8. data/Gemfile +20 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +40 -0
  11. data/Rakefile +19 -0
  12. data/lib/rom-elasticsearch.rb +1 -0
  13. data/lib/rom/elasticsearch.rb +8 -0
  14. data/lib/rom/elasticsearch/attribute.rb +30 -0
  15. data/lib/rom/elasticsearch/commands.rb +49 -0
  16. data/lib/rom/elasticsearch/dataset.rb +219 -0
  17. data/lib/rom/elasticsearch/errors.rb +23 -0
  18. data/lib/rom/elasticsearch/gateway.rb +81 -0
  19. data/lib/rom/elasticsearch/plugins/relation/query_dsl.rb +57 -0
  20. data/lib/rom/elasticsearch/query_methods.rb +64 -0
  21. data/lib/rom/elasticsearch/relation.rb +241 -0
  22. data/lib/rom/elasticsearch/schema.rb +26 -0
  23. data/lib/rom/elasticsearch/types.rb +33 -0
  24. data/lib/rom/elasticsearch/version.rb +5 -0
  25. data/rom-elasticsearch.gemspec +27 -0
  26. data/spec/integration/rom/elasticsearch/relation/command_spec.rb +47 -0
  27. data/spec/shared/setup.rb +16 -0
  28. data/spec/shared/unit/user_fixtures.rb +15 -0
  29. data/spec/shared/unit/users.rb +18 -0
  30. data/spec/spec_helper.rb +43 -0
  31. data/spec/unit/rom/elasticsearch/dataset/body_spec.rb +13 -0
  32. data/spec/unit/rom/elasticsearch/dataset/delete_spec.rb +17 -0
  33. data/spec/unit/rom/elasticsearch/dataset/params_spec.rb +13 -0
  34. data/spec/unit/rom/elasticsearch/dataset/put_spec.rb +14 -0
  35. data/spec/unit/rom/elasticsearch/dataset/query_string_spec.rb +12 -0
  36. data/spec/unit/rom/elasticsearch/dataset/search_spec.rb +20 -0
  37. data/spec/unit/rom/elasticsearch/gateway_spec.rb +10 -0
  38. data/spec/unit/rom/elasticsearch/plugins/relation/query_dsl_spec.rb +34 -0
  39. data/spec/unit/rom/elasticsearch/relation/create_index_spec.rb +75 -0
  40. data/spec/unit/rom/elasticsearch/relation/dataset_spec.rb +26 -0
  41. data/spec/unit/rom/elasticsearch/relation/delete_spec.rb +32 -0
  42. data/spec/unit/rom/elasticsearch/relation/get_spec.rb +22 -0
  43. data/spec/unit/rom/elasticsearch/relation/map_spec.rb +18 -0
  44. data/spec/unit/rom/elasticsearch/relation/pluck_spec.rb +18 -0
  45. data/spec/unit/rom/elasticsearch/relation/query_spec.rb +18 -0
  46. data/spec/unit/rom/elasticsearch/relation/query_string_spec.rb +18 -0
  47. data/spec/unit/rom/elasticsearch/relation/search_spec.rb +18 -0
  48. data/spec/unit/rom/elasticsearch/relation/to_a_spec.rb +28 -0
  49. metadata +186 -0
@@ -0,0 +1,26 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#dataset' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'setup'
7
+
8
+ context 'with default index settings' do
9
+ before do
10
+ conf.relation(:users) do
11
+ schema do
12
+ attribute :id, ROM::Types::Int
13
+ attribute :name, ROM::Types::String
14
+ end
15
+ end
16
+ end
17
+
18
+ it 'sets up correct index name' do
19
+ expect(relation.dataset.index).to eql(:users)
20
+ end
21
+
22
+ it 'sets up default index type' do
23
+ expect(relation.dataset.type).to eql(:user)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,32 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#delete' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'deletes all data' do
16
+ relation.delete
17
+
18
+ expect(relation.refresh.to_a).to be_empty
19
+ end
20
+
21
+ it 'deletes all data from a relation restricted by id' do
22
+ relation.get(2).delete
23
+
24
+ expect(relation.refresh.to_a).to eql([{ id: 1, name: 'Jane' }])
25
+ end
26
+
27
+ it 'deletes all data from a relation restricted by a query' do
28
+ relation.query(match: { name: 'Jane' }).delete
29
+
30
+ expect(relation.refresh.to_a).to eql([{ id: 2, name: 'John' }])
31
+ end
32
+ end
@@ -0,0 +1,22 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#get' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'returns user tuple by its id' do
16
+ expect(relation.get(1).one).to eql(id: 1, name: 'Jane')
17
+ end
18
+
19
+ it 'raises search error' do
20
+ expect { relation.get(12421).one }.to raise_error(ROM::Elasticsearch::SearchError)
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#map' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'yields result tuples' do
16
+ expect(relation.map { |t| t[:name] }).to match_array(%w[Jane John])
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#pluck' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'returns an array with plucked values' do
16
+ expect(relation.pluck(:name)).to match_array(%w[Jane John])
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#query' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'returns data matching query options' do
16
+ expect(relation.query(match: { name: 'Jane' }).one).to eql(id: 1, name: 'Jane')
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#query_string' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'returns data matching query string' do
16
+ expect(relation.query_string('name:Jane').one).to eql(id: 1, name: 'Jane')
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#search' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'returns data matching search options' do
16
+ expect(relation.search(query: { match: { name: 'Jane' } }).one).to eql(id: 1, name: 'Jane')
17
+ end
18
+ end
@@ -0,0 +1,28 @@
1
+ require 'rom/elasticsearch/relation'
2
+
3
+ RSpec.describe ROM::Elasticsearch::Relation, '#to_a' do
4
+ subject(:relation) { relations[:users] }
5
+
6
+ include_context 'users'
7
+
8
+ before do
9
+ relation.command(:create).(id: 1, name: 'Jane')
10
+ relation.command(:create).(id: 2, name: 'John')
11
+
12
+ relation.refresh
13
+ end
14
+
15
+ it 'returns user tuples' do
16
+ expect(relation).to match_array([{ id: 1, name: 'Jane' }, { id: 2, name: 'John' }])
17
+ end
18
+
19
+ it 'returns user structs' do
20
+ jane, john = relation.with(auto_struct: true).to_a.sort_by(&:name)
21
+
22
+ expect(jane.id).to be(1)
23
+ expect(jane.name).to eql('Jane')
24
+
25
+ expect(john.id).to be(2)
26
+ expect(john.name).to eql('John')
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rom-elasticsearch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Hannes Nevalainen
8
+ - Piotr Solnica
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-11-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rom-core
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '4.1'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '4.1'
28
+ - !ruby/object:Gem::Dependency
29
+ name: elasticsearch
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '6.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '6.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.6'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.6'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ description: ''
85
+ email:
86
+ - hannes.nevalainen@me.com
87
+ - piotr.solnica+oss@gmail.com
88
+ executables: []
89
+ extensions: []
90
+ extra_rdoc_files: []
91
+ files:
92
+ - ".gitignore"
93
+ - ".rspec"
94
+ - ".travis.yml"
95
+ - ".yardopts"
96
+ - CHANGELOG.md
97
+ - CONTRIBUTING.md
98
+ - Gemfile
99
+ - LICENSE.txt
100
+ - README.md
101
+ - Rakefile
102
+ - lib/rom-elasticsearch.rb
103
+ - lib/rom/elasticsearch.rb
104
+ - lib/rom/elasticsearch/attribute.rb
105
+ - lib/rom/elasticsearch/commands.rb
106
+ - lib/rom/elasticsearch/dataset.rb
107
+ - lib/rom/elasticsearch/errors.rb
108
+ - lib/rom/elasticsearch/gateway.rb
109
+ - lib/rom/elasticsearch/plugins/relation/query_dsl.rb
110
+ - lib/rom/elasticsearch/query_methods.rb
111
+ - lib/rom/elasticsearch/relation.rb
112
+ - lib/rom/elasticsearch/schema.rb
113
+ - lib/rom/elasticsearch/types.rb
114
+ - lib/rom/elasticsearch/version.rb
115
+ - rom-elasticsearch.gemspec
116
+ - spec/integration/rom/elasticsearch/relation/command_spec.rb
117
+ - spec/shared/setup.rb
118
+ - spec/shared/unit/user_fixtures.rb
119
+ - spec/shared/unit/users.rb
120
+ - spec/spec_helper.rb
121
+ - spec/unit/rom/elasticsearch/dataset/body_spec.rb
122
+ - spec/unit/rom/elasticsearch/dataset/delete_spec.rb
123
+ - spec/unit/rom/elasticsearch/dataset/params_spec.rb
124
+ - spec/unit/rom/elasticsearch/dataset/put_spec.rb
125
+ - spec/unit/rom/elasticsearch/dataset/query_string_spec.rb
126
+ - spec/unit/rom/elasticsearch/dataset/search_spec.rb
127
+ - spec/unit/rom/elasticsearch/gateway_spec.rb
128
+ - spec/unit/rom/elasticsearch/plugins/relation/query_dsl_spec.rb
129
+ - spec/unit/rom/elasticsearch/relation/create_index_spec.rb
130
+ - spec/unit/rom/elasticsearch/relation/dataset_spec.rb
131
+ - spec/unit/rom/elasticsearch/relation/delete_spec.rb
132
+ - spec/unit/rom/elasticsearch/relation/get_spec.rb
133
+ - spec/unit/rom/elasticsearch/relation/map_spec.rb
134
+ - spec/unit/rom/elasticsearch/relation/pluck_spec.rb
135
+ - spec/unit/rom/elasticsearch/relation/query_spec.rb
136
+ - spec/unit/rom/elasticsearch/relation/query_string_spec.rb
137
+ - spec/unit/rom/elasticsearch/relation/search_spec.rb
138
+ - spec/unit/rom/elasticsearch/relation/to_a_spec.rb
139
+ homepage: http://rom-rb.org
140
+ licenses:
141
+ - MIT
142
+ metadata: {}
143
+ post_install_message:
144
+ rdoc_options: []
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ requirements: []
158
+ rubyforge_project:
159
+ rubygems_version: 2.6.11
160
+ signing_key:
161
+ specification_version: 4
162
+ summary: ROM adapter for Elasticsearch
163
+ test_files:
164
+ - spec/integration/rom/elasticsearch/relation/command_spec.rb
165
+ - spec/shared/setup.rb
166
+ - spec/shared/unit/user_fixtures.rb
167
+ - spec/shared/unit/users.rb
168
+ - spec/spec_helper.rb
169
+ - spec/unit/rom/elasticsearch/dataset/body_spec.rb
170
+ - spec/unit/rom/elasticsearch/dataset/delete_spec.rb
171
+ - spec/unit/rom/elasticsearch/dataset/params_spec.rb
172
+ - spec/unit/rom/elasticsearch/dataset/put_spec.rb
173
+ - spec/unit/rom/elasticsearch/dataset/query_string_spec.rb
174
+ - spec/unit/rom/elasticsearch/dataset/search_spec.rb
175
+ - spec/unit/rom/elasticsearch/gateway_spec.rb
176
+ - spec/unit/rom/elasticsearch/plugins/relation/query_dsl_spec.rb
177
+ - spec/unit/rom/elasticsearch/relation/create_index_spec.rb
178
+ - spec/unit/rom/elasticsearch/relation/dataset_spec.rb
179
+ - spec/unit/rom/elasticsearch/relation/delete_spec.rb
180
+ - spec/unit/rom/elasticsearch/relation/get_spec.rb
181
+ - spec/unit/rom/elasticsearch/relation/map_spec.rb
182
+ - spec/unit/rom/elasticsearch/relation/pluck_spec.rb
183
+ - spec/unit/rom/elasticsearch/relation/query_spec.rb
184
+ - spec/unit/rom/elasticsearch/relation/query_string_spec.rb
185
+ - spec/unit/rom/elasticsearch/relation/search_spec.rb
186
+ - spec/unit/rom/elasticsearch/relation/to_a_spec.rb