gizzard 0.10.0 → 0.11.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: ee9dce1d68e1340d6ece571a820cfe9e1d2747fa4f054fc76c61d94650afd1d3
4
- data.tar.gz: 9edae9b1e9c06e39ff973226c7a831da823dd4f3494a6b042b5b6fd4268091f2
3
+ metadata.gz: 42863950edb84dc3092ca42f7da68620d1456134586da56c6851c79f27dcafcb
4
+ data.tar.gz: 4f9646524791d9ce8e7e9ee1ed592a5abfc6c52fb4c6acaeafdb395b3e062c66
5
5
  SHA512:
6
- metadata.gz: c5298a47808e83dc8cfc659e10cc0e5cc48e898e3e4e32288032adfe7949d84aa21cf457d0a0c9537883affd07d09680f59308ecb3a685cbb4035c9fcb50dd1a
7
- data.tar.gz: 6e639cd57f45b9f321a70e6055ce493a1e9993defbdaceb88f02a05ddee9bb799a1f3ea4c5e6a143c9ef4b38671cef81aaac2a6129f223cfd218ce675cac6081
6
+ metadata.gz: ecdadc5cd02c4031feffaba46df94ce4710b23e711fa59c667d029e482fa6d015c7190b6cd624e7a549a714887ae92a3c17648e15f9b99b1e77bf1d44360a815
7
+ data.tar.gz: f94048a2b9eb625b0075d88822ac9a62e991d3687d155b215d464558dbc4081deba49cc4e723e02dfac243ec24f9e1f39a21ad226d03e3cfb3b88449f067f729
data/lib/gizzard/mysql.rb CHANGED
@@ -4,20 +4,31 @@ module Gizzard
4
4
 
5
5
  included do
6
6
  include Base
7
+ end
7
8
 
8
- scope :filtered_by, -> (column, value) do
9
+ class_methods do
10
+ def filtered_by(column, value)
9
11
  v = value.respond_to?(:strip) ? value.strip : value
10
12
  return where(column => v) if v.present?
11
13
 
12
14
  all
13
15
  end
14
16
 
15
- scope :forward_matching_by, -> (column, value) { where("`#{table_name}`.`#{column}` LIKE ?", "#{sanitize_sql_like(value)}%") }
16
- scope :backward_matching_by, -> (column, value) { where("`#{table_name}`.`#{column}` LIKE ?", "%#{sanitize_sql_like(value)}") }
17
- scope :partial_matching_by, -> (column, value) { where("`#{table_name}`.`#{column}` LIKE ?", "%#{sanitize_sql_like(value)}%") }
18
- end
17
+ def forward_matching_by(column, value, collate: nil)
18
+ pattern = "#{sanitize_sql_like(value)}%"
19
+ like_by(column, pattern, collate: collate)
20
+ end
21
+
22
+ def backward_matching_by(column, value, collate: nil)
23
+ pattern = "%#{sanitize_sql_like(value)}"
24
+ like_by(column, pattern, collate: collate)
25
+ end
26
+
27
+ def partial_matching_by(column, value, collate: nil)
28
+ pattern = "%#{sanitize_sql_like(value)}%"
29
+ like_by(column, pattern, collate: collate)
30
+ end
19
31
 
20
- class_methods do
21
32
  def order_by_field(column, values)
22
33
  return in_order_of(column, values) unless values.empty?
23
34
 
@@ -58,6 +69,15 @@ module Gizzard
58
69
 
59
70
  private
60
71
 
72
+ def like_by(column, sanitized_pattern, collate: nil)
73
+ return where(arel_table[column].matches(sanitized_pattern)) if collate.blank?
74
+
75
+ where(
76
+ Arel.sql("`#{arel_table.name}`.`#{arel_table[column].name}` LIKE ? COLLATE #{collate}"),
77
+ sanitized_pattern
78
+ )
79
+ end
80
+
61
81
  def joins_with_index_hint(relation_name, indexes, join_type: :inner_join, hint: :use)
62
82
  relation = reflections[relation_name.to_s]
63
83
  join_table_name = relation.klass.table_name
@@ -1,3 +1,3 @@
1
1
  module Gizzard
2
- VERSION = "0.10.0"
2
+ VERSION = "0.11.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gizzard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takahiro Ooishi
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-08-12 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activerecord
@@ -212,7 +211,6 @@ licenses:
212
211
  metadata:
213
212
  homepage_uri: https://github.com/taka0125/gizzard
214
213
  source_code_uri: https://github.com/taka0125/gizzard
215
- post_install_message:
216
214
  rdoc_options: []
217
215
  require_paths:
218
216
  - lib
@@ -227,8 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
225
  - !ruby/object:Gem::Version
228
226
  version: '0'
229
227
  requirements: []
230
- rubygems_version: 3.4.19
231
- signing_key:
228
+ rubygems_version: 3.6.9
232
229
  specification_version: 4
233
230
  summary: Often use snippet for ActiveRecord.
234
231
  test_files: []