collate 0.1.14 → 0.1.15

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
  SHA1:
3
- metadata.gz: 94cfb77ae2c2ee79dd927782c5450491c658fe02
4
- data.tar.gz: 58c968df9aad21f0e194e6f5b3108bd2ecbea4ab
3
+ metadata.gz: fd74069c85dcc3b7256daf1ce1494763cf549b80
4
+ data.tar.gz: 78720066818348405fb2f321e9c4b28c28a06473
5
5
  SHA512:
6
- metadata.gz: d0e101db11da883bfdb65d40ad3db4c8459bf4481e602a064d7f585eb85eed0653aa22a8913adde699db8862d8e480afb055a34b39acfbc8051f61e97376b565
7
- data.tar.gz: 7e5df6f52f0629bde97dbc90457bd36f7e42f42f77ce0229c57c24da8a67beb6c1468449cf81e79c70ca11b92eed6eb0eb39df2395c1b0b90c797942cee4e692
6
+ metadata.gz: 103708f1a0080664d45f75b3f1d3abad5aaed36eea0c74a48f53639424ca550999e7966b689d4863401c534a55176b639b31d5aa7ddc8ef635ee58ed6b6b6e35
7
+ data.tar.gz: 0f13c2ba71fc696271588d760f2a9660477a98c25ff12e6cb45821f87640057b0d00e791139f20cef2374952e17b1ff607db544ec31f4b2bb8ad7ca0490695ab
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.4.1
data/circle.yml CHANGED
@@ -1,10 +1,10 @@
1
1
  dependencies:
2
2
  override:
3
- - rvm --default use ruby-2.3.3
3
+ - rvm --default use ruby-2.4.1
4
4
  - gem install bundler
5
5
  - bundle
6
6
  cache_directories:
7
- - "/opt/circleci/.rvm/gems/ruby-2.3.3"
7
+ - "/opt/circleci/.rvm/gems/ruby-2.4.1"
8
8
 
9
9
  database:
10
10
  override:
data/collate.gemspec CHANGED
@@ -28,15 +28,16 @@ Gem::Specification.new do |spec|
28
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ["lib"]
30
30
 
31
- spec.add_development_dependency "bundler", "~> 1.14"
32
- spec.add_development_dependency "rake", "~> 11.2.2" #"~> 10.0"
33
- spec.add_development_dependency "rails", "~> 5.0.1" #"~> 4.2", ">= 4.2.6"
31
+ spec.add_development_dependency "bundler", "~> 1.14.6"
32
+ spec.add_development_dependency "rake", "~> 12.0.0"
33
+ spec.add_development_dependency "rails", "~> 5.0.2"
34
34
  spec.add_development_dependency "single_test"
35
35
  spec.add_development_dependency "rails-controller-testing"
36
- spec.add_development_dependency "pg", "~> 0.18.4"
37
- spec.add_development_dependency "minitest", "~> 5.0"
38
- spec.add_development_dependency "pry-rescue", "~> 1.4", ">= 1.4.2"
39
- spec.add_development_dependency "simplecov", "~> 0.12.0"
40
- spec.add_development_dependency "coveralls", "~> 0.8.15"
41
- spec.add_development_dependency "haml", "~> 4.0", ">= 4.0.7"
36
+ spec.add_development_dependency "mysql2", "~> 0.4.5"
37
+ spec.add_development_dependency "pg", "~> 0.20.0"
38
+ spec.add_development_dependency "minitest", "~> 5.10.1", "< 5.10.2"
39
+ spec.add_development_dependency "pry-rescue", "~> 1.4.5"
40
+ spec.add_development_dependency "simplecov", "~> 0.14.1"
41
+ spec.add_development_dependency "coveralls", "~> 0.8.20"
42
+ spec.add_development_dependency "haml", "~> 4.0.7"
42
43
  end
data/lib/collate.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "collate/version"
2
+ require "collate/database"
2
3
  require "collate/engine"
3
4
 
4
5
  module Collate
@@ -13,9 +13,17 @@ module Collate
13
13
  def collate_on field, opts={}
14
14
  initialize_collate
15
15
 
16
+ new_filter = Collate::Filter.new(field, opts.merge({base_model_table_name: self.table_name}))
17
+
16
18
  self.collate_filters[self.default_group] ||= {filters: []}.merge(self.group_options)
19
+ self.collate_filters[self.default_group][:filters] << new_filter
20
+
21
+ if self.default_field_group
22
+ self.collate_field_groups[self.default_group] ||= {filter_groups: {}}.merge(self.group_options)
17
23
 
18
- self.collate_filters[self.default_group][:filters] << Collate::Filter.new(field, opts.merge({base_model_table_name: self.table_name}))
24
+ self.collate_field_groups[self.default_group][:filter_groups][self.default_field_group] ||= {filters: {}}.merge(self.field_group_options)
25
+ self.collate_field_groups[self.default_group][:filter_groups][self.default_field_group][:filters][new_filter.field_group_type] = new_filter
26
+ end
19
27
  end
20
28
 
21
29
  def collate_group name, **opts, &blk
@@ -27,6 +35,18 @@ module Collate
27
35
  blk.call
28
36
  end
29
37
 
38
+ def collate_filter_group group_name, **opts, &blk
39
+ initialize_collate
40
+
41
+ opts[:label] ||= group_name.to_s.titleize
42
+ self.field_group_options = opts
43
+ self.default_field_group = group_name
44
+
45
+ blk.call
46
+
47
+ self.default_field_group = nil
48
+ end
49
+
30
50
  def collate params
31
51
  initialize_collate
32
52
 
@@ -62,13 +82,16 @@ module Collate
62
82
  def initialize_collate
63
83
  if !self.respond_to? :collate_filters
64
84
  class << self
65
- attr_accessor :collate_filters, :collate_sorters, :default_group, :group_options
85
+ attr_accessor :collate_filters, :collate_sorters, :default_group,
86
+ :group_options, :default_field_group, :collate_field_groups,
87
+ :field_group_options
66
88
  end
67
89
 
68
90
  self.collate_filters ||= {}
69
91
  self.collate_sorters ||= []
70
92
  self.default_group ||= :main
71
93
  self.group_options ||= {}
94
+ self.collate_field_groups ||= {}
72
95
  end
73
96
  end
74
97
 
@@ -0,0 +1,5 @@
1
+ module Collate
2
+ def self.database_type
3
+ ActiveRecord::Base.connection.adapter_name.downcase.to_sym
4
+ end
5
+ end
@@ -1,6 +1,6 @@
1
1
  module Collate
2
2
  class Filter
3
- OPERATORS = [:eq, :ilike, :in, :le, :ge, :null, :contains, :present?, :&]
3
+ OPERATORS = [:eq, :ilike, :in, :le, :ge, :null, :contains, :present?, :&, :like]
4
4
 
5
5
  FIELD_TRANSFORMATIONS = [:date_difference, :date_part, :array_agg, :downcase, :split, :array_length]
6
6
  AGGREGATE_TRANSFORMATIONS = [:array_agg]
@@ -8,7 +8,7 @@ module Collate
8
8
 
9
9
  attr_accessor :field, :operator, :base_model_table_name, :field_transformations, :label,
10
10
  :component, :joins, :value_transformations, :grouping, :html_id, :having,
11
- :joins_prefix, :not, :or
11
+ :joins_prefix, :not, :or, :field_group_type
12
12
 
13
13
  def initialize(field, opt={})
14
14
  opt.each do |f, value|
@@ -27,8 +27,8 @@ module Collate
27
27
  :eq
28
28
  end
29
29
  self.field = "#{base_model_table_name}.#{field}" if field.is_a? Symbol
30
- self.field_transformations ||= {}
31
- self.value_transformations ||= {}
30
+ self.field_transformations ||= []
31
+ self.value_transformations ||= []
32
32
 
33
33
  self.html_id ||= param_key.gsub('{','').gsub('}','').gsub('.','_')
34
34
 
@@ -97,6 +97,16 @@ module Collate
97
97
  elsif component[:tags]
98
98
  self.component[:values] = []
99
99
  end
100
+
101
+ ## MySQL support
102
+ if Collate::database_type == :mysql2
103
+ # Translate all ILIKE operators to LIKE operators while downcasing values
104
+ if self.operator == :ilike
105
+ self.operator = :like
106
+ self.field_transformations << [:downcase]
107
+ self.value_transformations << [:downcase]
108
+ end
109
+ end
100
110
  end
101
111
 
102
112
  def param_key
@@ -1,3 +1,3 @@
1
1
  module Collate
2
- VERSION = "0.1.14"
2
+ VERSION = "0.1.15"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Page
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-04-06 00:00:00.000000000 Z
12
+ date: 2017-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -17,42 +17,42 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.14'
20
+ version: 1.14.6
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.14'
27
+ version: 1.14.6
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 11.2.2
34
+ version: 12.0.0
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 11.2.2
41
+ version: 12.0.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rails
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 5.0.1
48
+ version: 5.0.2
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 5.0.1
55
+ version: 5.0.2
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: single_test
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -81,90 +81,101 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: mysql2
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 0.4.5
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 0.4.5
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: pg
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - "~>"
89
103
  - !ruby/object:Gem::Version
90
- version: 0.18.4
104
+ version: 0.20.0
91
105
  type: :development
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - "~>"
96
110
  - !ruby/object:Gem::Version
97
- version: 0.18.4
111
+ version: 0.20.0
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: minitest
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
116
  - - "~>"
103
117
  - !ruby/object:Gem::Version
104
- version: '5.0'
118
+ version: 5.10.1
119
+ - - "<"
120
+ - !ruby/object:Gem::Version
121
+ version: 5.10.2
105
122
  type: :development
106
123
  prerelease: false
107
124
  version_requirements: !ruby/object:Gem::Requirement
108
125
  requirements:
109
126
  - - "~>"
110
127
  - !ruby/object:Gem::Version
111
- version: '5.0'
128
+ version: 5.10.1
129
+ - - "<"
130
+ - !ruby/object:Gem::Version
131
+ version: 5.10.2
112
132
  - !ruby/object:Gem::Dependency
113
133
  name: pry-rescue
114
134
  requirement: !ruby/object:Gem::Requirement
115
135
  requirements:
116
136
  - - "~>"
117
137
  - !ruby/object:Gem::Version
118
- version: '1.4'
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: 1.4.2
138
+ version: 1.4.5
122
139
  type: :development
123
140
  prerelease: false
124
141
  version_requirements: !ruby/object:Gem::Requirement
125
142
  requirements:
126
143
  - - "~>"
127
144
  - !ruby/object:Gem::Version
128
- version: '1.4'
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: 1.4.2
145
+ version: 1.4.5
132
146
  - !ruby/object:Gem::Dependency
133
147
  name: simplecov
134
148
  requirement: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: 0.12.0
152
+ version: 0.14.1
139
153
  type: :development
140
154
  prerelease: false
141
155
  version_requirements: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 0.12.0
159
+ version: 0.14.1
146
160
  - !ruby/object:Gem::Dependency
147
161
  name: coveralls
148
162
  requirement: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: 0.8.15
166
+ version: 0.8.20
153
167
  type: :development
154
168
  prerelease: false
155
169
  version_requirements: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: 0.8.15
173
+ version: 0.8.20
160
174
  - !ruby/object:Gem::Dependency
161
175
  name: haml
162
176
  requirement: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '4.0'
167
- - - ">="
168
179
  - !ruby/object:Gem::Version
169
180
  version: 4.0.7
170
181
  type: :development
@@ -172,9 +183,6 @@ dependencies:
172
183
  version_requirements: !ruby/object:Gem::Requirement
173
184
  requirements:
174
185
  - - "~>"
175
- - !ruby/object:Gem::Version
176
- version: '4.0'
177
- - - ">="
178
186
  - !ruby/object:Gem::Version
179
187
  version: 4.0.7
180
188
  description: Add some DSL to your model, then run a single method in your controller,
@@ -187,6 +195,7 @@ extensions: []
187
195
  extra_rdoc_files: []
188
196
  files:
189
197
  - ".gitignore"
198
+ - ".ruby-version"
190
199
  - Gemfile
191
200
  - LICENSE.txt
192
201
  - README.md
@@ -203,6 +212,7 @@ files:
203
212
  - lib/collate.rb
204
213
  - lib/collate/action_view_extension.rb
205
214
  - lib/collate/active_record_extension.rb
215
+ - lib/collate/database.rb
206
216
  - lib/collate/engine.rb
207
217
  - lib/collate/filter.rb
208
218
  - lib/collate/sorter.rb
@@ -228,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
238
  version: '0'
229
239
  requirements: []
230
240
  rubyforge_project:
231
- rubygems_version: 2.5.2
241
+ rubygems_version: 2.6.11
232
242
  signing_key:
233
243
  specification_version: 4
234
244
  summary: Facilitates the filtering of ActiveRecord models using simplified DSL.