fetcha 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fetcha.rb +18 -15
- data/lib/fetcha/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6bc945f6738e144d783205329479a73b7bcce92d
|
4
|
+
data.tar.gz: 2c5406ce136580118a7591b8d59bc08711b5bd92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 776cf811b5aeb285f3944dead807561e053424f04e1b35e2b3a55d26aca5337b72b155d961206184d3a641961ada7fea3ea7fe0d90cc893e5528cb2165c4c63f
|
7
|
+
data.tar.gz: 758489f31f0a8acb6b2fbb123fd148b1f758ccc1a9c7f067acd8ce8cb20d3da2fa20651d691026ec6f23afd6be94a57b6c8aba624dff621ad87b4afac74148c4
|
data/lib/fetcha.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'fetcha/version'
|
2
|
+
require 'active_support/concern'
|
3
3
|
|
4
4
|
module Fetcha
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
module ClassMethods
|
8
|
-
|
9
8
|
def fetch(params = {})
|
10
|
-
results =
|
9
|
+
results = all
|
11
10
|
query_scope = params['scope']
|
12
11
|
filters = params['filter']
|
13
12
|
sorting = params['sort']
|
@@ -28,7 +27,7 @@ module Fetcha
|
|
28
27
|
end
|
29
28
|
|
30
29
|
def total_count(column_name = :all, _options = nil)
|
31
|
-
@total_count ||=
|
30
|
+
@total_count ||=
|
32
31
|
begin
|
33
32
|
c = except(:offset, :limit, :order)
|
34
33
|
c = c.count(column_name)
|
@@ -49,7 +48,7 @@ module Fetcha
|
|
49
48
|
{
|
50
49
|
filtering: {},
|
51
50
|
sorting: {},
|
52
|
-
scopes: Set.new
|
51
|
+
scopes: Set.new,
|
53
52
|
pagination: {
|
54
53
|
default_size: 10,
|
55
54
|
max_size: 50
|
@@ -59,7 +58,7 @@ module Fetcha
|
|
59
58
|
|
60
59
|
def fulltext_search_on(*fields)
|
61
60
|
include PgSearch
|
62
|
-
|
61
|
+
pg_search_scope :search_full_text, against: fields, using: { trigram: { threshold: 0.1 }, tsearch: { prefix: true } }
|
63
62
|
end
|
64
63
|
|
65
64
|
def filterable_on(*fields)
|
@@ -84,7 +83,7 @@ module Fetcha
|
|
84
83
|
end
|
85
84
|
|
86
85
|
def process_scope(datasource, query_scope)
|
87
|
-
datasource.send(query_scope) if
|
86
|
+
datasource.send(query_scope) if fetchable_opts[:scopes].include? query_scope.to_sym
|
88
87
|
end
|
89
88
|
|
90
89
|
def process_search(datasource, search)
|
@@ -93,9 +92,9 @@ module Fetcha
|
|
93
92
|
|
94
93
|
def process_filtering(datasource, filters = {})
|
95
94
|
filter_opts = fetchable_opts[:filtering]
|
96
|
-
includes = Set.new
|
97
|
-
|
98
|
-
real_filters = filters.select do |k|
|
95
|
+
includes = Set.new
|
96
|
+
|
97
|
+
real_filters = filters.select do |k|
|
99
98
|
next unless filter_opts.keys.include? k
|
100
99
|
values = k.split('.')
|
101
100
|
includes << values.first if values.second.present?
|
@@ -104,7 +103,12 @@ module Fetcha
|
|
104
103
|
results = includes.empty? ? datasource : datasource.includes(includes.to_a)
|
105
104
|
|
106
105
|
real_filters.each do |key, value|
|
107
|
-
|
106
|
+
v = if value =~ /,/
|
107
|
+
value.split(',')
|
108
|
+
else
|
109
|
+
value
|
110
|
+
end
|
111
|
+
results = process_operation(results, key, v)
|
108
112
|
end
|
109
113
|
results
|
110
114
|
end
|
@@ -122,7 +126,7 @@ module Fetcha
|
|
122
126
|
results = send("#{operation}_filter", results, field, value)
|
123
127
|
end
|
124
128
|
else
|
125
|
-
results = results.where(
|
129
|
+
results = results.where(field => value)
|
126
130
|
end
|
127
131
|
results
|
128
132
|
end
|
@@ -158,7 +162,7 @@ module Fetcha
|
|
158
162
|
end
|
159
163
|
|
160
164
|
def method_missing(name, *args, block)
|
161
|
-
raise ForbiddenError if name
|
165
|
+
raise ForbiddenError if name =~ /.*_filter$/
|
162
166
|
super
|
163
167
|
end
|
164
168
|
end
|
@@ -185,6 +189,5 @@ module Fetcha
|
|
185
189
|
end
|
186
190
|
end
|
187
191
|
|
188
|
-
|
189
192
|
class ForbiddenError < StandardError; end
|
190
193
|
end
|
data/lib/fetcha/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincenzo Ferrara
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|