caoutsearch 0.0.7 → 0.0.9

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
  SHA256:
3
- metadata.gz: b63cce452c0627b856cb582366494c13b997a5e387ed03d2311b7f9ea8ea80f0
4
- data.tar.gz: f9fe10e15528bef3d13b668fe6e2cc9e1a693c0d171797a463cf93ae4e3aca37
3
+ metadata.gz: 82878f34c8444b35c7b9613b9d0991adbea0e7a66c38f8a8767e4ecd5007bf86
4
+ data.tar.gz: 4d2c7764cb043b19a6bf45f3fe4f3b169880e8893621d8fe14eef69c69e48b4b
5
5
  SHA512:
6
- metadata.gz: 9b5b638e8050f586b8140f729847d236e280c44e074b3300e746cf763fb861cfde3a5e5ac4071601782008aed363ed7130614914c25ec9f4c68f6542839145ad
7
- data.tar.gz: 0b2e3ec3ff278bd7615d4b39e82738bb805c25264ae0cad3289c7c626e7a9e71b0cddc8cad1f9b28bbbb2e059061f800aa7df3189bae860da2fd39fee44cfd99
6
+ metadata.gz: 3f07406c04c8e677a4de15ee406c047232049edb7c794c8787519c7ce09f8272e4a4f02c0a51e4957ffcc6972a1500a0192b8c9d08008c47689646bcea2339bc
7
+ data.tar.gz: 6d2ee0e46b4480e742a8921b68e3afbe55846c2fd5ce6603fc30d6513ec63e096b85ac59104396c223712bad2eefd8badbb486d158aa0fb85dddf9b32eafc280
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2022 Mon Territoire
1
+ Copyright (c) 2023 Solutions & Territoire
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # Caoutsearch [\ˈkawt͡ˈsɝtʃ\\](http://ipa-reader.xyz/?text=ˈkawt͡ˈsɝtʃ)
2
2
 
3
3
  <span>[![Gem Version](https://badge.fury.io/rb/caoutsearch.svg)](https://rubygems.org/gems/caoutsearch)</span> <span>
4
- [![CI Status](https://github.com/mon-territoire/caoutsearch/actions/workflows/ci.yml/badge.svg)](https://github.com/mon-territoire/caoutsearch/actions/workflows/ci.yml)</span> <span>
4
+ [![CI Status](https://github.com/solutions-territoire/caoutsearch/actions/workflows/ci.yml/badge.svg)](https://github.com/solutions-territoire/caoutsearch/actions/workflows/ci.yml)</span> <span>
5
5
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)</span> <span>
6
- [![Maintainability](https://api.codeclimate.com/v1/badges/fbe73db3fd8be9a10e12/maintainability)](https://codeclimate.com/github/mon-territoire/caoutsearch/maintainability)</span> <span>
7
- [![Test Coverage](https://api.codeclimate.com/v1/badges/fbe73db3fd8be9a10e12/test_coverage)](https://codeclimate.com/github/mon-territoire/caoutsearch/test_coverage)</span>
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/fbe73db3fd8be9a10e12/maintainability)](https://codeclimate.com/github/solutions-territoire/caoutsearch/maintainability)</span> <span>
7
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/fbe73db3fd8be9a10e12/test_coverage)](https://codeclimate.com/github/solutions-territoire/caoutsearch/test_coverage)</span>
8
8
 
9
- <span>[![JRuby](https://github.com/mon-territoire/caoutsearch/actions/workflows/jruby.yml/badge.svg)](https://github.com/mon-territoire/caoutsearch/actions/workflows/jruby.yml)</span> <span>
10
- [![Truffle Ruby](https://github.com/mon-territoire/caoutsearch/actions/workflows/truffle_ruby.yml/badge.svg)](https://github.com/mon-territoire/caoutsearch/actions/workflows/truffle_ruby.yml)</span>
9
+ <span>[![JRuby](https://github.com/solutions-territoire/caoutsearch/actions/workflows/jruby.yml/badge.svg)](https://github.com/solutions-territoire/caoutsearch/actions/workflows/jruby.yml)</span> <span>
10
+ [![Truffle Ruby](https://github.com/solutions-territoire/caoutsearch/actions/workflows/truffle_ruby.yml/badge.svg)](https://github.com/solutions-territoire/caoutsearch/actions/workflows/truffle_ruby.yml)</span>
11
11
 
12
12
  **!! Gem under development before public release !!**
13
13
 
@@ -15,14 +15,14 @@ Caoutsearch is a new Elasticsearch integration for Ruby and/or Rails.
15
15
  It provides a simple but powerful DSL to perform complex indexing and searching, while securely exposing search criteria to a public and chainable API, without overwhelming your models.
16
16
 
17
17
  Caoutsearch only supports Elasticsearch 8.x right now.
18
- It is used in production in a robust application, updated and maintained for several years at [Mon Territoire](https://mon-territoire.fr).
18
+ It is used in production in a robust application, updated and maintained for several years at [Solutions & Territoire](https://solutions-territoire.fr).
19
19
 
20
20
  Caoutsearch was inspired by awesome gems such as [elasticsearch-rails](https://github.com/elastic/elasticsearch-rails) or [search_flip](https://github.com/mrkamel/search_flip).
21
21
  Depending on your search scenarios, they may better suite your needs.
22
22
 
23
23
  ## Documentation
24
24
 
25
- Visit our [offical documentation](https://mon-territoire.github.io/caoutsearch) to understand how to use Caoutsearch.
25
+ Visit our [offical documentation](https://solutions-territoire.github.io/caoutsearch) to understand how to use Caoutsearch.
26
26
 
27
27
  ## Installation
28
28
 
@@ -71,8 +71,8 @@ ArticleSearch.search(published_on: [["now-1y", nil]]).aggregate(:popular_tags)
71
71
 
72
72
  ## Contributing
73
73
 
74
- 1. Don't hesitate to submit your feature/idea/fix in [issues](https://github.com/inkstak/activejob-status)
75
- 2. Fork the [repository](https://github.com/inkstak/activejob-status)
74
+ 1. Don't hesitate to submit your feature/idea/fix in [issues](https://github.com/solutions-territoire/caoutsearch/issues)
75
+ 2. Fork the [repository](https://github.com/solutions-territoire/caoutsearch)
76
76
  3. Create your feature branch
77
77
  4. Ensure RSpec & Rubocop are passing
78
78
  4. Create a pull request
@@ -99,7 +99,7 @@ bundle exec rake
99
99
 
100
100
  ## License & credits
101
101
 
102
- Please see [LICENSE](https://github.com/mon-territoire/caoutsearch/blob/main/LICENSE) for further details.
102
+ Please see [LICENSE](https://github.com/solutions-territoire/caoutsearch/blob/main/LICENSE) for further details.
103
103
 
104
- Contributors: [./graphs/contributors](https://github.com/mon-territoire/caoutsearch/graphs/contributors)
104
+ Contributors: [./graphs/contributors](https://github.com/solutions-territoire/caoutsearch/graphs/contributors)
105
105
 
@@ -25,7 +25,11 @@ module Caoutsearch
25
25
  protected
26
26
 
27
27
  def default_mappings
28
- path = ::Rails.root.join("config/elasticsearch/#{index_name}.json")
28
+ if defined?(Rails)
29
+ path = ::Rails.root.join("config/elasticsearch/#{index_name}.json")
30
+ else
31
+ raise NotImplementedError, "Mappings files cannot be found out of a Rails application"
32
+ end
29
33
  raise ArgumentError, "No mappings file found for #{index_name} at #{path}" unless path.exist?
30
34
 
31
35
  MultiJson.load(path.read)
@@ -6,7 +6,11 @@ module Caoutsearch
6
6
  def filter
7
7
  return {} if value.nil?
8
8
 
9
- {term: {key => value}}
9
+ if value.is_a?(Array)
10
+ {terms: {key => value}}
11
+ else
12
+ {term: {key => value}}
13
+ end
10
14
  end
11
15
 
12
16
  protected
@@ -27,7 +27,7 @@ module Caoutsearch
27
27
  build_range_query(input)
28
28
  when ::Hash
29
29
  case input
30
- in { between: dates }
30
+ in {between: dates}
31
31
  build_range_query(dates)
32
32
  else
33
33
  parameters = input.to_h do |operator, value|
@@ -12,7 +12,7 @@ module Caoutsearch
12
12
  request = payload[:request]
13
13
 
14
14
  debug do
15
- title = color("#{payload[:klass]} #{subject}", GREEN, true)
15
+ title = color("#{payload[:klass]} #{subject}", GREEN, bold: true)
16
16
  request_body = format_request_body(request, format: format)
17
17
 
18
18
  message = " #{title} #{request_body}"
@@ -27,11 +27,11 @@ module Caoutsearch
27
27
  return unless response
28
28
 
29
29
  debug do
30
- title = color("#{payload[:klass]} #{subject}", GREEN, true)
30
+ title = color("#{payload[:klass]} #{subject}", GREEN, bold: true)
31
31
 
32
32
  duration = "#{event.duration.round(1)}ms"
33
33
  duration += " / took #{response["took"]}ms" if response.key?("took")
34
- duration = color("(#{duration})", GREEN, true)
34
+ duration = color("(#{duration})", GREEN, bold: true)
35
35
 
36
36
  message = " #{title} #{duration}"
37
37
  message += " got errors" if response["errors"]
@@ -44,7 +44,7 @@ module Caoutsearch
44
44
 
45
45
  errors = response["items"].select { |k, _| k.values.first["error"] }
46
46
  errors.each do |error|
47
- warn { color(error, RED, true) }
47
+ warn { color(error, RED, bold: true) }
48
48
  end
49
49
  end
50
50
 
@@ -54,16 +54,24 @@ module Caoutsearch
54
54
  body.ai(limit: true, index: false)
55
55
  when "full"
56
56
  json = MultiJson.dump(body)
57
- color(json, BLUE, true)
57
+ color(json, BLUE, bold: true)
58
58
  when "truncated"
59
59
  json = MultiJson.dump(body).truncate(200, omission: "…}")
60
- color(json, BLUE, true)
60
+ color(json, BLUE, bold: true)
61
61
  end
62
62
  end
63
63
 
64
64
  def inspect_json_size(json)
65
65
  ApplicationController.helpers.number_to_human_size(MultiJson.dump(json).bytesize)
66
66
  end
67
+
68
+ def color(message, color, bold: false)
69
+ if Gem::Version.new(ActiveSupport.version) >= Gem::Version.new("7.1.0")
70
+ super
71
+ else
72
+ super(message, color, bold)
73
+ end
74
+ end
67
75
  end
68
76
  end
69
77
  end
@@ -19,8 +19,8 @@ module Caoutsearch
19
19
  end
20
20
 
21
21
  module ClassMethods
22
- def reindex(*properties, **options, &block)
23
- index_engine_class.reindex(all, *properties, **options, &block)
22
+ def reindex(...)
23
+ index_engine_class.reindex(all, ...)
24
24
  end
25
25
 
26
26
  def delete_indexes
@@ -11,16 +11,16 @@ module Caoutsearch
11
11
  end
12
12
 
13
13
  class_methods do
14
- def before_build(*filters, &blk)
15
- set_callback(:build, :before, *filters, &blk)
14
+ def before_build(...)
15
+ set_callback(:build, :before, ...)
16
16
  end
17
17
 
18
- def after_build(*filters, &blk)
19
- set_callback(:build, :after, *filters, &blk)
18
+ def after_build(...)
19
+ set_callback(:build, :after, ...)
20
20
  end
21
21
 
22
- def around_build(*filters, &blk)
23
- set_callback(:build, :around, *filters, &blk)
22
+ def around_build(...)
23
+ set_callback(:build, :around, ...)
24
24
  end
25
25
  end
26
26
  end
@@ -32,7 +32,7 @@ module Caoutsearch
32
32
 
33
33
  def properties_to_inspect
34
34
  PROPERTIES_TO_INSPECT.each_with_object({}) do |name, properties|
35
- value = instance_variable_get("@#{name}")
35
+ value = instance_variable_get(:"@#{name}")
36
36
  properties[name] = value.inspect if value.present?
37
37
  end
38
38
  end
@@ -25,7 +25,7 @@ module Caoutsearch
25
25
 
26
26
  def properties_to_inspect
27
27
  PROPERTIES_TO_INSPECT.each_with_object({}) do |name, properties|
28
- value = instance_variable_get("@#{name}")
28
+ value = instance_variable_get(:"@#{name}")
29
29
  properties[name] = value.inspect if value
30
30
  end
31
31
  end
@@ -53,8 +53,9 @@ module Caoutsearch
53
53
  # rubocop:enable Lint/BooleanSymbol
54
54
 
55
55
  def cast_as_boolean(value)
56
- if value == ""
57
- nil
56
+ case value
57
+ when nil, "" then nil
58
+ when Array then value.map { |v| cast_as_boolean(v) }.uniq.compact
58
59
  else
59
60
  BOOLEAN_FALSE_VALUES.exclude?(value)
60
61
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Caoutsearch
4
- VERSION = "0.0.7"
4
+ VERSION = "0.0.9"
5
5
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caoutsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Savater Sebastien
8
8
  - Bailhache Jeanne
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2023-08-11 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
@@ -17,14 +16,14 @@ dependencies:
17
16
  requirements:
18
17
  - - ">="
19
18
  - !ruby/object:Gem::Version
20
- version: '5.0'
19
+ version: '7.2'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - ">="
26
25
  - !ruby/object:Gem::Version
27
- version: '5.0'
26
+ version: '7.2'
28
27
  - !ruby/object:Gem::Dependency
29
28
  name: elasticsearch
30
29
  requirement: !ruby/object:Gem::Requirement
@@ -81,217 +80,6 @@ dependencies:
81
80
  - - "~>"
82
81
  - !ruby/object:Gem::Version
83
82
  version: '2.6'
84
- - !ruby/object:Gem::Dependency
85
- name: activerecord
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: amazing_print
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: appraisal
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: database_cleaner-active_record
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
140
- - !ruby/object:Gem::Dependency
141
- name: rake
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: '0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- - !ruby/object:Gem::Dependency
155
- name: rspec
156
- requirement: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- version: '0'
161
- type: :development
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
168
- - !ruby/object:Gem::Dependency
169
- name: rubocop
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
182
- - !ruby/object:Gem::Dependency
183
- name: rubocop-rake
184
- requirement: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- version: '0'
189
- type: :development
190
- prerelease: false
191
- version_requirements: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: '0'
196
- - !ruby/object:Gem::Dependency
197
- name: rubocop-rspec
198
- requirement: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: '0'
203
- type: :development
204
- prerelease: false
205
- version_requirements: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - ">="
208
- - !ruby/object:Gem::Version
209
- version: '0'
210
- - !ruby/object:Gem::Dependency
211
- name: rubocop-performance
212
- requirement: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - ">="
215
- - !ruby/object:Gem::Version
216
- version: '0'
217
- type: :development
218
- prerelease: false
219
- version_requirements: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - ">="
222
- - !ruby/object:Gem::Version
223
- version: '0'
224
- - !ruby/object:Gem::Dependency
225
- name: simplecov
226
- requirement: !ruby/object:Gem::Requirement
227
- requirements:
228
- - - ">="
229
- - !ruby/object:Gem::Version
230
- version: '0'
231
- type: :development
232
- prerelease: false
233
- version_requirements: !ruby/object:Gem::Requirement
234
- requirements:
235
- - - ">="
236
- - !ruby/object:Gem::Version
237
- version: '0'
238
- - !ruby/object:Gem::Dependency
239
- name: standard
240
- requirement: !ruby/object:Gem::Requirement
241
- requirements:
242
- - - ">="
243
- - !ruby/object:Gem::Version
244
- version: '1.0'
245
- type: :development
246
- prerelease: false
247
- version_requirements: !ruby/object:Gem::Requirement
248
- requirements:
249
- - - ">="
250
- - !ruby/object:Gem::Version
251
- version: '1.0'
252
- - !ruby/object:Gem::Dependency
253
- name: sqlite3
254
- requirement: !ruby/object:Gem::Requirement
255
- requirements:
256
- - - ">="
257
- - !ruby/object:Gem::Version
258
- version: '0'
259
- type: :development
260
- prerelease: false
261
- version_requirements: !ruby/object:Gem::Requirement
262
- requirements:
263
- - - ">="
264
- - !ruby/object:Gem::Version
265
- version: '0'
266
- - !ruby/object:Gem::Dependency
267
- name: timecop
268
- requirement: !ruby/object:Gem::Requirement
269
- requirements:
270
- - - ">="
271
- - !ruby/object:Gem::Version
272
- version: '0'
273
- type: :development
274
- prerelease: false
275
- version_requirements: !ruby/object:Gem::Requirement
276
- requirements:
277
- - - ">="
278
- - !ruby/object:Gem::Version
279
- version: '0'
280
- - !ruby/object:Gem::Dependency
281
- name: webmock
282
- requirement: !ruby/object:Gem::Requirement
283
- requirements:
284
- - - ">="
285
- - !ruby/object:Gem::Version
286
- version: '0'
287
- type: :development
288
- prerelease: false
289
- version_requirements: !ruby/object:Gem::Requirement
290
- requirements:
291
- - - ">="
292
- - !ruby/object:Gem::Version
293
- version: '0'
294
- description:
295
83
  email: github.60k5k@simplelogin.co
296
84
  executables: []
297
85
  extensions: []
@@ -371,11 +159,10 @@ files:
371
159
  - lib/caoutsearch/testing.rb
372
160
  - lib/caoutsearch/testing/mock_requests.rb
373
161
  - lib/caoutsearch/version.rb
374
- homepage: http://github.com/mon-territoire/caoutsearch
162
+ homepage: http://github.com/solutions-territoire/caoutsearch
375
163
  licenses:
376
164
  - MIT
377
165
  metadata: {}
378
- post_install_message:
379
166
  rdoc_options: []
380
167
  require_paths:
381
168
  - lib
@@ -390,8 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
390
177
  - !ruby/object:Gem::Version
391
178
  version: '0'
392
179
  requirements: []
393
- rubygems_version: 3.4.8
394
- signing_key:
180
+ rubygems_version: 4.0.3
395
181
  specification_version: 4
396
182
  summary: An alternative approach to index & search with Elasticsearch & Ruby on Rails
397
183
  test_files: []