like_query 1.0.2 → 1.1.0

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: 99c2aefb292f6ab08cbe862377d063d42a9a6a032592358593386e0e61ca3295
4
- data.tar.gz: 40165a4b542f4cff88af6a2c5c3d92e4af0e8c92ab40fec54c753ab89e38b12c
3
+ metadata.gz: 3291e396d226fb8c163ff49db78b8b23080914632a1f324c357ed529334c2fad
4
+ data.tar.gz: 31d01639a45908671623b72472ab6bdf26416aedfe3c047c90d18993d512b927
5
5
  SHA512:
6
- metadata.gz: eaa27b8325b8680cfe13f44717102b6ab50350a426f0c3bd72f2dd72d2dae4f3a6146a000c29cad1ca3d74072ecaaa78b19dd959c415fd9d779cb9a1cbfaa588
7
- data.tar.gz: c69eb3ab35d8428814b272e14f4bef332386fdae76354ff1b3eb7d7f3f9a7d646c1f5e9dd42cb6c0bd33f9de3a2e121e3ae5173bc4b2c85c4c9e97bf0e3fa616
6
+ metadata.gz: d400e70293eedbc5be66beb12a023f802f32c5ebb99c51a81507104ad0e39e8a8459486bbbb9978380c33825b2e0ae6d6aaf2cad20a2d1ea9d1f624db2d51e55
7
+ data.tar.gz: 26cd9841e467129fffff8c99e8b6e010b6204b631569c0ecd21af2db7166c67e8dec93fab3667840af7aa7a9f802e521037dc302fcac3ab37d37ca2b2c576407
data/README.md CHANGED
@@ -116,13 +116,18 @@ Book.like('author.name:marc', [{author: [:name]}])
116
116
  # => find books where author.name includes "marc"
117
117
  ```
118
118
 
119
- LikeQuery raises a error if invalid column name is given, vor example:
119
+ LikeQuery raises a error if invalid column name is given, for example:
120
120
 
121
121
  ```ruby
122
122
  Book.like('title2:history', [:title, :price])
123
123
  # => raises a error like column «title2» is not present within available columns: «title, price»
124
+ # => can be translated/changed by setting locale like_query.column_not_available_error
125
+ # => Format: "column «%<column>s» is not present within available columns: «%<available_columns>s»"
124
126
  ```
125
127
 
128
+ This behaviour can be shut off/on by `Rails.configuration.x.like_query.column_search = true/false`
129
+ And overriden by `Book.like(..., column_search: true/false)`
130
+
126
131
  There is a helper for allowing the user translating the column names:
127
132
 
128
133
  ```ruby
@@ -1,7 +1,7 @@
1
1
  module LikeQuery
2
2
  module ModelExtensions
3
3
 
4
- def like(search_string, schema = nil, debug: false)
4
+ def like(search_string, schema = nil, debug: false, column_search: Rails.configuration.x.like_query.column_search || true)
5
5
 
6
6
  search_string = '' if !search_string
7
7
  search_string = search_string.to_s unless search_string.is_a?(String)
@@ -20,8 +20,7 @@ module LikeQuery
20
20
 
21
21
  search_string.split(' ').each do |s|
22
22
 
23
- f_str = format_string_element(s)
24
- #exception_on_unknown_column(f_str, schema)
23
+ f_str = format_string_element(s, column_search)
25
24
  q = []
26
25
 
27
26
  (schema.first.is_a?(Array) ? schema.first : schema).each do |p|
@@ -61,7 +60,11 @@ module LikeQuery
61
60
 
62
61
  # raise error
63
62
  if f_str[:column] && !available_column_keys.include?(f_str[:column])
64
- raise "column «#{f_str[:column]}» is not present within available columns: «#{available_column_keys.join(', ')}»"
63
+ str = I18n.t(
64
+ 'like_query.column_not_available_error',
65
+ default: 'column «%<column>s» is not present within available columns: «%<available_columns>s»'
66
+ )
67
+ raise format(str, column: f_str[:column], available_columns: available_column_keys.join(', '))
65
68
  end
66
69
 
67
70
  __q = q.compact
@@ -108,9 +111,9 @@ module LikeQuery
108
111
  r
109
112
  end
110
113
 
111
- def format_string_element(str)
114
+ def format_string_element(str, column_search)
112
115
 
113
- column = str.match(LikeQuery::Formatter::COLUMN_REGEX_CASE_INSENSITIVE)
116
+ column = (column_search ? str.match(LikeQuery::Formatter::COLUMN_REGEX_CASE_INSENSITIVE) : nil)
114
117
  _str = (column ? str.match(/(?<=:)[\s\S]+/) : str).to_s
115
118
  match_number = _str.match(/^(\d+(?:\.\d+)?)$/)
116
119
  match_range = _str.match(/^(\d+(?:\.\d+)?)(\.\.)(\d+(?:\.\d+)?)$/)
@@ -1,3 +1,3 @@
1
1
  module LikeQuery
2
- VERSION = "1.0.2"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: like_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-05 00:00:00.000000000 Z
11
+ date: 2024-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails