like_query 0.0.14 → 0.0.15

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: 0d4230b3b33d18fab9361c9146858a63b0ef5a9cc139f822cba599e4ff5e9466
4
- data.tar.gz: 57ea4af2fe5206f68858c1ab03bfd610568fca5567daef4083439d494a208080
3
+ metadata.gz: a6b1065f2cdaf7715628fd8034ae6818f2ecd15fe9d5ec96121f92e773382f3b
4
+ data.tar.gz: 28b568fa643003ae89b0f7f77457d0e1ab0f89183f3526104be935b072dd6287
5
5
  SHA512:
6
- metadata.gz: 5676c9773c9003eb4e8461b98f12aace86c20f765968ab9985810ecb4b1de67803414ee6f6c4481546acf372e579e2f60eafc0a0367639725e754c198a3a91bd
7
- data.tar.gz: 2e3f116f4b43b8519cb148104416038350d4ebef5a63fc22201101e025678acc54b08a8a2fc06ae8cbf115c5754441cb798a4541d66f8d9fb04e6fcba8adbfa0
6
+ metadata.gz: 427c75b9584a7ab87816641735e3d531f15ec9fceb47655213cdc77d657af983a9741ddc1feb526bb9103168d90a2c92cbabf875a4b122729e4ce2284f99965f
7
+ data.tar.gz: '0282191477287d0a61df3ee2373e4070d866ca5e68801a0880fd446853bd7b9becc3e36b2e2a529c7501486c1138227db8907fbd3aef671ede5bc2e45abff1e4'
data/README.md CHANGED
@@ -42,8 +42,9 @@ Article.like('fir', :name, :number)
42
42
  # => searches by: "where name like '%fir%' or number like '%fir%'"
43
43
  # => queries are built with Article.arel_table[:name].matches('%fir%')
44
44
 
45
- Article.like(['fir', 'ambühl'], :name, :number, customer: :name)
45
+ Article.like('fir ambühl', [:name, :number, customer: :name])
46
46
  # => :customer is the name of the association
47
+ # => first parameter ('fir ambühl') is equal to ['fir', 'ambühl']
47
48
  # => search-tag as array adds a ".and(where( ... like '%ambühl%'))" for all scoped columns
48
49
  # => would also find art1
49
50
  ```
@@ -84,6 +85,20 @@ Article.like('fir', :name).generate_hash(:number, limit: 10)
84
85
 
85
86
  `#generate_hash` uses `LikeQuery::Collect`, functionality is the same.
86
87
 
88
+ **Enums**
89
+
90
+ ```ruby
91
+ class Article < ApplicationRecord
92
+ enum type_enum: { 'Wheel': 0, 'Vehicle': 1, 'Truck': 2 }
93
+ end
94
+ ```
95
+
96
+ ```ruby
97
+ Article.like('Truck', [:type_enum]).count #=> 1
98
+ ```
99
+
100
+ Translated enums and enums on associated models (e.g. article.customer) not yet implemented
101
+
87
102
  **Class LikeQuery::Collect**
88
103
 
89
104
  ```ruby
@@ -17,7 +17,10 @@ module LikeQuery
17
17
  raise "only one array can be given: Either schema as one array or as multiple args, not as array"
18
18
  end
19
19
  (schema.first.is_a?(Array) ? schema.first : schema).each do |p|
20
- if p.is_a?(Symbol) || p.is_a?(String)
20
+ enum_lab = enum_keys(p, s)
21
+ if enum_lab
22
+ q = arel_table[p].in(enum_lab)
23
+ elsif p.is_a?(Symbol) || p.is_a?(String)
21
24
  _q = arel_table[p].matches(str)
22
25
  q = (q ? q.or(_q) : _q)
23
26
  elsif p.is_a?(Hash)
@@ -70,5 +73,17 @@ module LikeQuery
70
73
  @like_query_schema
71
74
  end
72
75
 
76
+ private
77
+
78
+ def enum_keys(column_name, value)
79
+ en = defined_enums[column_name.to_s]
80
+ return nil if en.nil?
81
+ r = []
82
+ en.each do |k,v|
83
+ r.push(v) if k.downcase.include?(value.downcase)
84
+ end
85
+ r
86
+ end
87
+
73
88
  end
74
89
  end
@@ -1,3 +1,3 @@
1
1
  module LikeQuery
2
- VERSION = "0.0.14"
2
+ VERSION = "0.0.15"
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: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-11 00:00:00.000000000 Z
11
+ date: 2024-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -60,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  requirements: []
63
- rubygems_version: 3.4.10
63
+ rubygems_version: 3.5.3
64
64
  signing_key:
65
65
  specification_version: 4
66
66
  summary: helper for building active record calls.