fetcha 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: 5e8c9c65052bf4b3c082ad8a2e43ed4f0fa8cac6
4
- data.tar.gz: 3d389201efbcc9c6e791742121a76eb2673b2f7c
3
+ metadata.gz: 1ea5c94f089b86302eddd095696c7ff51108df79
4
+ data.tar.gz: ccc829a691707b987e8bea5f46dce014e8c17517
5
5
  SHA512:
6
- metadata.gz: 7f131e308da5f23d5804987c7c3ca8cd42c7c470e651ee2523c65ee0c4510b02175dba5ed5a990c318adcca080976ff5d35c5f4fcdffe38a9549c94d2fe7df9e
7
- data.tar.gz: 8defd0ec82fec37fa4b1b6c02241cba77c7458eca7393fdb11c0535a20b99fe2b63023cf7490a7971f329ea017c946683082ada55a6e7ab1a0fa3f0479d83c42
6
+ metadata.gz: e024c2b7dd68455f771184c8e93ed6254ecbafd5ebab15f17922913125d8348223cbcb49ae133e2531682d0eab29cfdd48929c2cfc98517cdf871f59014e7d7d
7
+ data.tar.gz: 9ddb62e973f8ec1670e7257c24b706acbd1949c74f4c6a2a391aafccc66577010f3b96ca97153f21f9bc6ca0d46fbe9f9556be5109eed03e5f3b32fcfd689148
data/fetcha.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency("activesupport", ">= 3.0.0")
22
+ spec.add_dependency("pg_search")
22
23
 
23
24
  spec.add_development_dependency "bundler", "~> 1.12"
24
25
  spec.add_development_dependency "rake", "~> 10.0"
data/lib/fetcha.rb CHANGED
@@ -34,6 +34,11 @@ module Fetcha
34
34
  }
35
35
  end
36
36
 
37
+ def fulltext_search_on(*fields)
38
+ include PgSearch
39
+ self.pg_search_scope :search_full_text, against: fields, using: { trigram: { threshold: 0.1 }, tsearch: { prefix: true } }
40
+ end
41
+
37
42
  def filterable_on(*fields)
38
43
  fields.each do |field|
39
44
  fetchable_opts[:filtering][field.to_s] = nil
@@ -59,7 +64,19 @@ module Fetcha
59
64
  datasource.send(query_scope) if (fetchable_opts[:scopes].include? query_scope.to_sym)
60
65
  end
61
66
 
62
- def process_filtering(datasource, filters = {})
67
+ def process_filtering(datasource, filters)
68
+ if filters.is_a?(String)
69
+ full_text_filtering(datasource, filters)
70
+ else
71
+ hash_filtering(datasource, filters)
72
+ end
73
+ end
74
+
75
+ def full_text_filtering(datasource, filter)
76
+ datasource.search_full_text(filter)
77
+ end
78
+
79
+ def hash_filtering(datasource, filters = {})
63
80
  filter_opts = fetchable_opts[:filtering]
64
81
  includes = Set.new()
65
82
 
@@ -117,7 +134,6 @@ module Fetcha
117
134
  datasource.where("#{field} ilike ?", "%#{value}%")
118
135
  end
119
136
 
120
-
121
137
  def starts_with_filter(datasource, field, value)
122
138
  datasource.where("#{field} ilike ?", "#{value}%")
123
139
  end
@@ -1,3 +1,3 @@
1
1
  module Fetcha
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fetcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincenzo Ferrara
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-05 00:00:00.000000000 Z
11
+ date: 2016-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: pg_search
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement