like_query 0.0.12 → 0.0.14

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: 7d2dc6db9752704bd4ddb724dad78fd1af88bbbc9a865ab4ac4e1d9f879118a4
4
- data.tar.gz: 5d42e509c6723aeffe2bb27626ac2a511f725e6c88ff56ab101220135839540e
3
+ metadata.gz: 0d4230b3b33d18fab9361c9146858a63b0ef5a9cc139f822cba599e4ff5e9466
4
+ data.tar.gz: 57ea4af2fe5206f68858c1ab03bfd610568fca5567daef4083439d494a208080
5
5
  SHA512:
6
- metadata.gz: e5e6924e36cb86fd1b3fcc27786575b3c04ac0381583c891574a000f3b89c44aedc9402b476ddb8db0f1738658ba5eae51226014e2ef9a3758b2382d510ad8f9
7
- data.tar.gz: a2146917979e4a67490848ccc3eee98b9d70651bdf9aca7fb2f91848671092724cbcc7840ebd22ef3e3081c010b15308ea9ceb98a807bbcb2fc404dd032c9884
6
+ metadata.gz: 5676c9773c9003eb4e8461b98f12aace86c20f765968ab9985810ecb4b1de67803414ee6f6c4481546acf372e579e2f60eafc0a0367639725e754c198a3a91bd
7
+ data.tar.gz: 2e3f116f4b43b8519cb148104416038350d4ebef5a63fc22201101e025678acc54b08a8a2fc06ae8cbf115c5754441cb798a4541d66f8d9fb04e6fcba8adbfa0
data/README.md CHANGED
@@ -206,6 +206,47 @@ Otherwise `#generate_hash` would not know what values to return.
206
206
  r = c.generate_hash
207
207
  ```
208
208
 
209
+ 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.
210
+
211
+ **url**
212
+
213
+ You can also use the handy Rails url generators to avoid having to build urls tediously with javascript on the frontend:
214
+
215
+ ```ruby
216
+ customer = Customer.create(name: 'Ambühl')
217
+ proc1 = proc {|cust| customer_path(cust)}
218
+ r = Customer.like('ambühl', :name).generate_hash(:name, url: proc1)
219
+ r[:data].first[:url] #=> "/customer/#{customer.id}"
220
+ ```
221
+ or
222
+
223
+ ```ruby
224
+ customer = Customer.create(name: 'Ambühl')
225
+ c = LikeQuery::Collect.new
226
+ proc1 = proc {|cust| customer_path(cust)}
227
+ c.collect(url: proc1) { Customer.like('ambühl', :name) }
228
+ r = c.generate_hash
229
+ r[:data].first[:url] #=> "/customer/#{customer.id}"
230
+ ```
231
+
232
+ or
233
+
234
+ ```ruby
235
+ customer = Customer.create(name: 'Ambühl')
236
+ art = Article.create(number: 'art-no', customer: customer)
237
+ c = LikeQuery::Collect.new
238
+ proc1 = proc {|cust| customer_path(cust)}
239
+
240
+ c.collect(url: proc1) { Customer.like('xyxyxyyxy', :number) }
241
+ # remember url although nothing found
242
+
243
+ proc2 = proc {|article| customer_article_path(article.customer, article) }
244
+ c.collect(parent: :customer, url: proc2) { Article.like('art', :number) }
245
+ r = c.generate_hash
246
+ r[:data].first[:url] #=> "/customer/#{customer.id}"
247
+ r[:data].first[:children].first[:url] #=> "/customer/#{customer.id}/article/#{art.id}"
248
+ ```
249
+
209
250
  **Performance**
210
251
 
211
252
  Values defined by the schema are processed by the `#send` method, but recursively.
@@ -14,16 +14,17 @@ module LikeQuery
14
14
  @columns_count = 0
15
15
  @sub_records_columns_count = 0
16
16
  @image = false
17
- #@sub_records_image = false
18
17
  @start_time = Time.now
19
18
  @schemes = {}
20
19
  @images = {}
21
20
  @urls = {}
21
+ @no_action = {}
22
22
  end
23
23
 
24
- def set_schema(model, schema = nil, url: nil)
24
+ def set_schema(model, schema = nil, url: nil, no_action: false)
25
25
  @schemes[model.to_s] = schema_to_hash(schema)
26
26
  @urls[model.to_s] = url if url
27
+ @no_action[model.to_s] = no_action
27
28
  end
28
29
 
29
30
  def collect(output_schema = nil, limit: nil, parent: nil, image: nil, url: nil, &block)
@@ -135,6 +136,7 @@ module LikeQuery
135
136
  end
136
137
  r[:image] = record.send(image) if image
137
138
  r[:url] = url.yield(record) if url
139
+ r[:no_action] = true if @no_action[record.class.to_s]
138
140
  r
139
141
  end
140
142
 
@@ -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
@@ -1,12 +1,13 @@
1
1
  module LikeQuery
2
2
  module ModelExtensions
3
3
 
4
- def like(search_string, *schema)
4
+ def like(search_string, schema = nil)
5
5
 
6
6
  raise 'like can only be called from a model' if self == ApplicationRecord
7
7
 
8
8
  queries = nil
9
9
  associations = []
10
+ schema = [schema] if schema.is_a?(Symbol)
10
11
  @like_query_schema = schema
11
12
 
12
13
  (search_string.is_a?(String) ? search_string.split(' ') : search_string).each do |s|
@@ -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.12"
2
+ VERSION = "0.0.14"
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.12
4
+ version: 0.0.14
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-06 00:00:00.000000000 Z
11
+ date: 2023-10-11 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