gizzard 0.9.1 → 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: cb2568fde715eb73945c6b19987ea08b3e2c72f34a6e4b5c5ab6dc8758d3f228
4
- data.tar.gz: 3522cc6db511d5038947be77b59f6cb91c001df133690455424297ac68bd2b6c
3
+ metadata.gz: 42863950edb84dc3092ca42f7da68620d1456134586da56c6851c79f27dcafcb
4
+ data.tar.gz: 4f9646524791d9ce8e7e9ee1ed592a5abfc6c52fb4c6acaeafdb395b3e062c66
5
5
  SHA512:
6
- metadata.gz: d33ca160e6cf2499cab2eb47d122eb9200c1d255531b76ada7dfd91f79966f3cc0709fbd877bf69ad38c68435294d63d16012ecd341d6888f30b8226fa65cf28
7
- data.tar.gz: 55c1901b302755e81bc945337b9dec1f3d1ef92d3faeecd6f967fc679c9dbf30718ca10bd3772782ca03326b42e9823e84ecc576f5cab6d285426c91b5d27f56
6
+ metadata.gz: ecdadc5cd02c4031feffaba46df94ce4710b23e711fa59c667d029e482fa6d015c7190b6cd624e7a549a714887ae92a3c17648e15f9b99b1e77bf1d44360a815
7
+ data.tar.gz: f94048a2b9eb625b0075d88822ac9a62e991d3687d155b215d464558dbc4081deba49cc4e723e02dfac243ec24f9e1f39a21ad226d03e3cfb3b88449f067f729
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Gizzard
2
2
 
3
- [![Build Status](https://github.com/taka0125/gizzard/workflows/Ruby/badge.svg?branch=main)](https://github.com/taka0125/gizzard/actions)
3
+ [![Build Status](https://github.com/taka0125/gizzard/actions/workflows/main.yml/badge.svg)](https://github.com/taka0125/gizzard/actions/workflows/main.yml)
4
+ [![Gem Version](https://badge.fury.io/rb/gizzard.svg)](https://badge.fury.io/rb/gizzard)
4
5
 
5
6
  Often use snippet for ActiveRecord.
6
7
 
data/lib/gizzard/base.rb CHANGED
@@ -7,11 +7,7 @@ module Gizzard
7
7
  records = Array(records)
8
8
  return if records.empty?
9
9
 
10
- if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new(7)
11
- ActiveRecord::Associations::Preloader.new(records: records, associations: associations, scope: scope).call
12
- else
13
- ActiveRecord::Associations::Preloader.new.preload(records, associations, scope)
14
- end
10
+ ActiveRecord::Associations::Preloader.new(records: records, associations: associations, scope: scope).call
15
11
  end
16
12
 
17
13
  def delete_all_by_id(batch_size: 1000)
data/lib/gizzard/mysql.rb CHANGED
@@ -4,20 +4,35 @@ 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
- v.present? ? where(column => v) : all
12
+ return where(column => v) if v.present?
13
+
14
+ all
11
15
  end
12
16
 
13
- scope :forward_matching_by, -> (column, value) { where("`#{table_name}`.`#{column}` LIKE ?", "#{sanitize_sql_like(value)}%") }
14
- scope :backward_matching_by, -> (column, value) { where("`#{table_name}`.`#{column}` LIKE ?", "%#{sanitize_sql_like(value)}") }
15
- scope :partial_matching_by, -> (column, value) { where("`#{table_name}`.`#{column}` LIKE ?", "%#{sanitize_sql_like(value)}%") }
16
- 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
17
31
 
18
- class_methods do
19
32
  def order_by_field(column, values)
20
- values.present? ? order(Arel.sql("field(`#{table_name}`.`#{column}`, #{values.join(',')})")) : all
33
+ return in_order_of(column, values) unless values.empty?
34
+
35
+ all
21
36
  end
22
37
 
23
38
  def order_by_id_field(ids)
@@ -54,6 +69,15 @@ module Gizzard
54
69
 
55
70
  private
56
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
+
57
81
  def joins_with_index_hint(relation_name, indexes, join_type: :inner_join, hint: :use)
58
82
  relation = reflections[relation_name.to_s]
59
83
  join_table_name = relation.klass.table_name
@@ -1,3 +1,3 @@
1
1
  module Gizzard
2
- VERSION = "0.9.1"
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.9.1
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: 2023-12-17 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
@@ -16,28 +15,28 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '5.2'
18
+ version: '7.0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '5.2'
25
+ version: '7.0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: activesupport
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '5.2'
32
+ version: '7.0'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '5.2'
39
+ version: '7.0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: ridgepole
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -207,9 +206,11 @@ files:
207
206
  - lib/gizzard/version.rb
208
207
  - sig/gizzard.rbs
209
208
  homepage: https://github.com/taka0125/gizzard
210
- licenses: []
211
- metadata: {}
212
- post_install_message:
209
+ licenses:
210
+ - MIT
211
+ metadata:
212
+ homepage_uri: https://github.com/taka0125/gizzard
213
+ source_code_uri: https://github.com/taka0125/gizzard
213
214
  rdoc_options: []
214
215
  require_paths:
215
216
  - lib
@@ -217,15 +218,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
218
  requirements:
218
219
  - - ">="
219
220
  - !ruby/object:Gem::Version
220
- version: '0'
221
+ version: 3.1.0
221
222
  required_rubygems_version: !ruby/object:Gem::Requirement
222
223
  requirements:
223
224
  - - ">="
224
225
  - !ruby/object:Gem::Version
225
226
  version: '0'
226
227
  requirements: []
227
- rubygems_version: 3.4.10
228
- signing_key:
228
+ rubygems_version: 3.6.9
229
229
  specification_version: 4
230
230
  summary: Often use snippet for ActiveRecord.
231
231
  test_files: []