like_query 0.0.13 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88909f6d5d1906a27c6cb848f7fad43a711666bae3f21a4241da60f26a73041a
4
- data.tar.gz: f88b8e02d010380d4f71ce258b32991340240402ed666dc269a1e6bfc0c02083
3
+ metadata.gz: a6b1065f2cdaf7715628fd8034ae6818f2ecd15fe9d5ec96121f92e773382f3b
4
+ data.tar.gz: 28b568fa643003ae89b0f7f77457d0e1ab0f89183f3526104be935b072dd6287
5
5
  SHA512:
6
- metadata.gz: 350cccf97727f54769ba1bf732cd5205d8aa98e0601507da50d2c242bf88713c158eecc4353552c9aff3803713c2816c36c7c58f3997fd1c6f9948a2ce5a7eaf
7
- data.tar.gz: c6e242f576685d7233ad85a3f3e5633414dac3d56dfdf292c4d938b51ca4e8c8828ec23d01d1c97f411ae99c47c1dfa1a980caef2ee513893114220da6807421
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
@@ -206,6 +221,8 @@ Otherwise `#generate_hash` would not know what values to return.
206
221
  r = c.generate_hash
207
222
  ```
208
223
 
224
+ There is a `:no_action` argument on `set_schema`. If set to true, it will return a `no_action: true` on regarding models on the resulting json. This is meant for omitting javascript actions or mouse hover effects for resulting records that should do nothing.
225
+
209
226
  **url**
210
227
 
211
228
  You can also use the handy Rails url generators to avoid having to build urls tediously with javascript on the frontend:
@@ -0,0 +1,7 @@
1
+ module LikeQuery
2
+ module Extender
3
+ def has_like_query
4
+ extend LikeQuery::ModelExtensions
5
+ end
6
+ end
7
+ end
@@ -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,7 +1,8 @@
1
1
  module LikeQuery
2
2
  class Railtie < Rails::Railtie
3
3
  config.after_initialize do
4
- ApplicationRecord.send(:extend, LikeQuery::ModelExtensions)
4
+ #ActiveRecord::Base.send(:extend, LikeQuery::Extender)
5
+ ActiveRecord::Base.send(:extend, LikeQuery::ModelExtensions)
5
6
  end
6
7
  end
7
8
  end
@@ -1,3 +1,3 @@
1
1
  module LikeQuery
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.15"
3
3
  end
data/lib/like_query.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'like_query/version'
2
2
  require 'like_query/model_extensions'
3
+ require 'like_query/extender'
3
4
  require 'like_query/railtie'
4
5
  require 'like_query/collect'
5
6
 
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.13
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-09-07 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
@@ -34,6 +34,7 @@ files:
34
34
  - README.md
35
35
  - lib/like_query.rb
36
36
  - lib/like_query/collect.rb
37
+ - lib/like_query/extender.rb
37
38
  - lib/like_query/model_extensions.rb
38
39
  - lib/like_query/railtie.rb
39
40
  - lib/like_query/version.rb
@@ -59,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
62
  requirements: []
62
- rubygems_version: 3.4.10
63
+ rubygems_version: 3.5.3
63
64
  signing_key:
64
65
  specification_version: 4
65
66
  summary: helper for building active record calls.