fetcha 0.2.2 → 0.2.3
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 +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
|