mincer 0.2.9 → 0.2.11
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/mincer/processors/pagination/processor.rb +9 -1
- data/lib/mincer/processors/pg_json_dumper/processor.rb +2 -1
- data/lib/mincer/processors/pg_search/processor.rb +8 -1
- data/lib/mincer/processors/pg_search/search_engines/array.rb +3 -1
- data/lib/mincer/processors/sorting/processor.rb +6 -4
- data/lib/mincer/version.rb +1 -1
- data/spec/lib/mincer/processors/pg_search/search_engines/array_spec.rb +2 -2
- data/spec/lib/mincer/processors/sorting/processor_spec.rb +24 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75beab8a1ff5a1cb3050b90da354ff7f35015a2c
|
4
|
+
data.tar.gz: f21249f540044374eab84600f51d4a3aeb93fd55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb1fa9dd8f0feb642d7d670c6269de05429357be671ad5fef8f7af9af56d54912372f1caa917538166119ded1a030319553d49f3611985480d8e54198d80e13f
|
7
|
+
data.tar.gz: d4693f19a4c5718d2c3f71dfa8f8f686a7cafa463f049fc0a6355a4ecdeef0eeb37bf484e330bfd50b38c0ca53271c2646bb1a82ade179cf634f542ea31878c7
|
@@ -30,7 +30,7 @@ module Mincer
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def per_page
|
33
|
-
@args[::Mincer.config.pagination.per_page_param_name]
|
33
|
+
@mincer.class.default_per_page || @args[::Mincer.config.pagination.per_page_param_name]
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -41,6 +41,14 @@ module Mincer
|
|
41
41
|
def skip_pagination!
|
42
42
|
active_processors.delete(Mincer::Processors::Pagination::Processor)
|
43
43
|
end
|
44
|
+
|
45
|
+
def paginate_defaults(options = {})
|
46
|
+
@default_per_page = options[:per_page] if options[:per_page]
|
47
|
+
end
|
48
|
+
|
49
|
+
def default_per_page
|
50
|
+
@default_per_page
|
51
|
+
end
|
44
52
|
end
|
45
53
|
end
|
46
54
|
|
@@ -13,7 +13,8 @@ module Mincer
|
|
13
13
|
|
14
14
|
def to_json
|
15
15
|
if dump_supported?
|
16
|
-
Mincer.connection.execute(json_query).first['json']
|
16
|
+
result = Mincer.connection.execute(json_query).first['json']
|
17
|
+
@options[:singularize] ? (result[1..-2].presence || '{}') : result
|
17
18
|
else
|
18
19
|
warn 'To dump data to json with postgres you need to use postgres server version >= 9.2'
|
19
20
|
end
|
@@ -19,7 +19,14 @@ module Mincer
|
|
19
19
|
|
20
20
|
def apply_pg_search(relation, args)
|
21
21
|
rel = relation.where(conditions(args))
|
22
|
-
|
22
|
+
rank = rank(args)
|
23
|
+
if rank.blank?
|
24
|
+
rel
|
25
|
+
elsif @mincer.default_sorting
|
26
|
+
rel.reorder(rank)
|
27
|
+
else
|
28
|
+
rel.order(rank)
|
29
|
+
end
|
23
30
|
end
|
24
31
|
|
25
32
|
def conditions(args)
|
@@ -19,9 +19,11 @@ module Mincer
|
|
19
19
|
private
|
20
20
|
|
21
21
|
def document_for(search_statement)
|
22
|
+
sanitizers = search_statement.sanitizers(:document)
|
22
23
|
arel_group do
|
23
24
|
documents = search_statement.columns.map do |search_column|
|
24
|
-
|
25
|
+
sanitized_term = sanitizers.any? ? sanitize_column("#{search_column}::text", sanitizers).to_sql : search_column
|
26
|
+
Arel.sql(sanitized_term + '::text[]')
|
25
27
|
end
|
26
28
|
join_expressions(documents, '||')
|
27
29
|
end
|
@@ -9,7 +9,9 @@ module Mincer
|
|
9
9
|
def apply
|
10
10
|
sorting_sting = sort_string
|
11
11
|
if sorting_sting.present?
|
12
|
-
@mincer.sort_attribute
|
12
|
+
@mincer.sort_attribute = (sort_attr || default_sort).to_s
|
13
|
+
@mincer.sort_order = (order_attr || default_order).to_s
|
14
|
+
@mincer.default_sorting = sort_attr.blank? && order_attr.blank?
|
13
15
|
@relation.order(sorting_sting)
|
14
16
|
else
|
15
17
|
@relation
|
@@ -21,11 +23,11 @@ module Mincer
|
|
21
23
|
end
|
22
24
|
|
23
25
|
def sort_attr
|
24
|
-
(@mincer.send(:allowed_sort_attributes).include?(sort) && sort)
|
26
|
+
(@mincer.send(:allowed_sort_attributes).include?(sort) && sort)
|
25
27
|
end
|
26
28
|
|
27
29
|
def order_attr
|
28
|
-
(%w{asc desc}.include?(order.try(:downcase)) && order)
|
30
|
+
(%w{asc desc}.include?(order.try(:downcase)) && order)
|
29
31
|
end
|
30
32
|
|
31
33
|
def sort
|
@@ -52,7 +54,7 @@ module Mincer
|
|
52
54
|
|
53
55
|
included do
|
54
56
|
# Used in view helpers
|
55
|
-
attr_accessor :sort_attribute, :sort_order
|
57
|
+
attr_accessor :sort_attribute, :sort_order, :default_sorting
|
56
58
|
end
|
57
59
|
|
58
60
|
module ClassMethods
|
data/lib/mincer/version.rb
CHANGED
@@ -49,7 +49,7 @@ describe ::Mincer::PgSearch::SearchEngines::Array do
|
|
49
49
|
it 'generates search condition with two columns, two terms and option "ignore_accent" set to true ' do
|
50
50
|
search_statement1 = search_statement_class.new(['"records"."text"', '"records"."text2"'], engines: [:array], ignore_accent: true)
|
51
51
|
search_engine = search_engine_class.new({ pattern: 'search word' }, [search_statement1])
|
52
|
-
search_engine.conditions.to_sql.should == %{(("records"."text"::text[] || "records"."text2"::text[]) @> ARRAY[unaccent('search'),unaccent('word')])}
|
52
|
+
search_engine.conditions.to_sql.should == %{((unaccent("records"."text"::text)::text[] || unaccent("records"."text2"::text)::text[]) @> ARRAY[unaccent('search'),unaccent('word')])}
|
53
53
|
end
|
54
54
|
|
55
55
|
#TODO: sanitizer can not be set on array columns since we ned to unpack an reconstruct those arrays. Find a solution
|
@@ -62,7 +62,7 @@ describe ::Mincer::PgSearch::SearchEngines::Array do
|
|
62
62
|
it 'generates search condition with two columns, two terms and option "ignore_accent" and "ignore_case" set to true ' do
|
63
63
|
search_statement1 = search_statement_class.new(['"records"."text"', '"records"."text2"'], engines: [:array], ignore_accent: true, ignore_case: true)
|
64
64
|
search_engine = search_engine_class.new({ pattern: 'search word' }, [search_statement1])
|
65
|
-
search_engine.conditions.to_sql.should == %{(("records"."text"::text[] || "records"."text2"::text[]) @> ARRAY[unaccent(lower('search')),unaccent(lower('word'))])}
|
65
|
+
search_engine.conditions.to_sql.should == %{((unaccent(lower("records"."text"::text))::text[] || unaccent(lower("records"."text2"::text))::text[]) @> ARRAY[unaccent(lower('search')),unaccent(lower('word'))])}
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'generates search condition with one column, one term, two statements and no options' do
|
@@ -58,6 +58,30 @@ describe ::Mincer::Processors::Sorting::Processor do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
context 'when sort and order is not given in params' do
|
62
|
+
it 'sets @mincer.default_sorting to true' do
|
63
|
+
subject = Class.new(Mincer::Base)
|
64
|
+
query = subject.new(ActiveRecordModel, { })
|
65
|
+
expect(query.default_sorting).to eq(true)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'when sort is given in params' do
|
70
|
+
it 'sets @mincer.default_sorting to false' do
|
71
|
+
subject = Class.new(Mincer::Base)
|
72
|
+
query = subject.new(ActiveRecordModel, { 'sort' => 'text' })
|
73
|
+
expect(query.default_sorting).to eq(false)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when order is given in params' do
|
78
|
+
it 'sets @mincer.default_sorting to false' do
|
79
|
+
subject = Class.new(Mincer::Base)
|
80
|
+
query = subject.new(ActiveRecordModel, { 'order' => 'asc' })
|
81
|
+
expect(query.default_sorting).to eq(false)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
61
85
|
describe 'sorting with basic model with defaults changed' do
|
62
86
|
it 'sorts by default attributes(id) abd order(ASC) when nothing passed to args' do
|
63
87
|
subject = Class.new(Mincer::Base) do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mincer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Krasinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
version: '0'
|
197
197
|
requirements: []
|
198
198
|
rubyforge_project:
|
199
|
-
rubygems_version: 2.
|
199
|
+
rubygems_version: 2.5.1
|
200
200
|
signing_key:
|
201
201
|
specification_version: 4
|
202
202
|
summary: ActiveRecord::Relation wrapper for pagination, order, json, search, cache_digest
|