metka 0.1.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,26 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Metka
4
- class AllTagsQuery
5
- include Singleton
4
+ class AllTagsQuery < BaseQuery
5
+ private
6
6
 
7
- def call(model, column_name, tag_list)
8
- column_cast = Arel::Nodes::NamedFunction.new(
9
- 'CAST',
10
- [model.arel_table[column_name].as('text[]')]
11
- )
12
-
13
- value = Arel::Nodes::SqlLiteral.new(
14
- # In Rails 5.2 and above Sanitanization moved to public level, but still we have to support 4.2 and 5.0 and 5.1
15
- ActiveRecord::Base.send(:sanitize_sql_for_conditions, ['ARRAY[?]', tag_list.to_a])
16
- )
17
-
18
- value_cast = Arel::Nodes::NamedFunction.new(
19
- 'CAST',
20
- [value.as('text[]')]
21
- )
22
-
23
- Arel::Nodes::InfixOperation.new('@>', column_cast, value_cast)
7
+ def infix_operator
8
+ '@>'
24
9
  end
25
10
  end
26
11
  end
@@ -1,28 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'singleton'
4
-
5
3
  module Metka
6
- class AnyTagsQuery
7
- include Singleton
8
-
9
- def call(model, column_name, tag_list)
10
- column_cast = Arel::Nodes::NamedFunction.new(
11
- 'CAST',
12
- [model.arel_table[column_name].as('text[]')]
13
- )
14
-
15
- value = Arel::Nodes::SqlLiteral.new(
16
- # In Rails 5.2 and above Sanitanization moved to public level, but still we have to support 4.2 and 5.0 and 5.1
17
- ActiveRecord::Base.send(:sanitize_sql_for_conditions, ['ARRAY[?]', tag_list.to_a])
18
- )
19
-
20
- value_cast = Arel::Nodes::NamedFunction.new(
21
- 'CAST',
22
- [value.as('text[]')]
23
- )
4
+ class AnyTagsQuery < BaseQuery
5
+ private
24
6
 
25
- Arel::Nodes::InfixOperation.new('&&', column_cast, value_cast)
7
+ def infix_operator
8
+ '&&'
26
9
  end
27
10
  end
28
11
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ require 'singleton'
3
+
4
+ module Metka
5
+ class BaseQuery
6
+ include Singleton
7
+
8
+ def call(model, column_name, tag_list)
9
+ column_cast = Arel::Nodes::NamedFunction.new(
10
+ 'CAST',
11
+ [model.arel_table[column_name].as('text[]')]
12
+ )
13
+
14
+ value = Arel::Nodes::SqlLiteral.new(
15
+ # In Rails 5.2 and above Sanitanization moved to public level, but still we have to support 4.2 and 5.0 and 5.1
16
+ ActiveRecord::Base.send(:sanitize_sql_for_conditions, ['ARRAY[?]', tag_list.to_a])
17
+ )
18
+
19
+ value_cast = Arel::Nodes::NamedFunction.new(
20
+ 'CAST',
21
+ [value.as('text[]')]
22
+ )
23
+
24
+ Arel::Nodes::InfixOperation.new(infix_operator, column_cast, value_cast)
25
+ end
26
+ end
27
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Metka
4
- VERSION = '0.1.2'
4
+ VERSION = '2.0.0'
5
5
  end
@@ -7,8 +7,8 @@ require 'metka/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'metka'
9
9
  spec.version = Metka::VERSION
10
- spec.authors = ['Igor Alexandrov']
11
- spec.email = ['igor.alexandrov@gmail.com']
10
+ spec.authors = ['Igor Alexandrov', 'Andrey Morozov']
11
+ spec.email = ['igor.alexandrov@gmail.com', 'andrey.morozov@jetrockets.ru']
12
12
 
13
13
  spec.summary = 'Rails tagging system based on PostgreSQL arrays'
14
14
  spec.description = 'Rails tagging system based on PostgreSQL arrays'
@@ -24,16 +24,19 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ['lib']
26
26
 
27
- spec.add_dependency 'dry-configurable'
28
- spec.add_dependency 'rails', '>= 4.2'
27
+ spec.add_dependency 'dry-configurable', '>= 0.8'
28
+ spec.add_dependency 'rails', '>= 5.1'
29
29
 
30
- spec.add_development_dependency 'ammeter'
31
- spec.add_development_dependency 'bundler'
32
- spec.add_development_dependency 'faker'
30
+ spec.add_development_dependency 'ammeter', '>= 1.1'
31
+ spec.add_development_dependency 'pry', '>= 0.12.2'
32
+ spec.add_development_dependency 'bundler', '>= 1.3'
33
+ spec.add_development_dependency 'faker', '>= 2.8'
33
34
  spec.add_development_dependency 'jetrockets-standard', '~> 1.0.1'
34
- spec.add_development_dependency 'pg'
35
- spec.add_development_dependency 'rake'
36
- spec.add_development_dependency 'rspec'
37
- spec.add_development_dependency 'rspec-rails'
38
- spec.add_development_dependency 'timecop'
35
+ spec.add_development_dependency 'pg', '>= 1.1'
36
+ spec.add_development_dependency 'rake', '>= 0.8.7'
37
+ spec.add_development_dependency 'rspec', '>= 3.9'
38
+ spec.add_development_dependency 'rspec-rails', '>= 3.9'
39
+ spec.add_development_dependency 'timecop', '>= 0.9'
40
+ spec.add_development_dependency 'database_cleaner', '>= 1.7'
41
+ spec.required_ruby_version = '>= 2.5'
39
42
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Alexandrov
8
+ - Andrey Morozov
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2019-10-29 00:00:00.000000000 Z
12
+ date: 2020-05-08 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: dry-configurable
@@ -16,70 +17,84 @@ dependencies:
16
17
  requirements:
17
18
  - - ">="
18
19
  - !ruby/object:Gem::Version
19
- version: '0'
20
+ version: '0.8'
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - ">="
25
26
  - !ruby/object:Gem::Version
26
- version: '0'
27
+ version: '0.8'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: rails
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: '4.2'
34
+ version: '5.1'
34
35
  type: :runtime
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - ">="
39
40
  - !ruby/object:Gem::Version
40
- version: '4.2'
41
+ version: '5.1'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: ammeter
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - ">="
46
47
  - !ruby/object:Gem::Version
47
- version: '0'
48
+ version: '1.1'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - ">="
53
54
  - !ruby/object:Gem::Version
54
- version: '0'
55
+ version: '1.1'
56
+ - !ruby/object:Gem::Dependency
57
+ name: pry
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.12.2
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.12.2
55
70
  - !ruby/object:Gem::Dependency
56
71
  name: bundler
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
74
  - - ">="
60
75
  - !ruby/object:Gem::Version
61
- version: '0'
76
+ version: '1.3'
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
81
  - - ">="
67
82
  - !ruby/object:Gem::Version
68
- version: '0'
83
+ version: '1.3'
69
84
  - !ruby/object:Gem::Dependency
70
85
  name: faker
71
86
  requirement: !ruby/object:Gem::Requirement
72
87
  requirements:
73
88
  - - ">="
74
89
  - !ruby/object:Gem::Version
75
- version: '0'
90
+ version: '2.8'
76
91
  type: :development
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
80
95
  - - ">="
81
96
  - !ruby/object:Gem::Version
82
- version: '0'
97
+ version: '2.8'
83
98
  - !ruby/object:Gem::Dependency
84
99
  name: jetrockets-standard
85
100
  requirement: !ruby/object:Gem::Requirement
@@ -100,73 +115,88 @@ dependencies:
100
115
  requirements:
101
116
  - - ">="
102
117
  - !ruby/object:Gem::Version
103
- version: '0'
118
+ version: '1.1'
104
119
  type: :development
105
120
  prerelease: false
106
121
  version_requirements: !ruby/object:Gem::Requirement
107
122
  requirements:
108
123
  - - ">="
109
124
  - !ruby/object:Gem::Version
110
- version: '0'
125
+ version: '1.1'
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: rake
113
128
  requirement: !ruby/object:Gem::Requirement
114
129
  requirements:
115
130
  - - ">="
116
131
  - !ruby/object:Gem::Version
117
- version: '0'
132
+ version: 0.8.7
118
133
  type: :development
119
134
  prerelease: false
120
135
  version_requirements: !ruby/object:Gem::Requirement
121
136
  requirements:
122
137
  - - ">="
123
138
  - !ruby/object:Gem::Version
124
- version: '0'
139
+ version: 0.8.7
125
140
  - !ruby/object:Gem::Dependency
126
141
  name: rspec
127
142
  requirement: !ruby/object:Gem::Requirement
128
143
  requirements:
129
144
  - - ">="
130
145
  - !ruby/object:Gem::Version
131
- version: '0'
146
+ version: '3.9'
132
147
  type: :development
133
148
  prerelease: false
134
149
  version_requirements: !ruby/object:Gem::Requirement
135
150
  requirements:
136
151
  - - ">="
137
152
  - !ruby/object:Gem::Version
138
- version: '0'
153
+ version: '3.9'
139
154
  - !ruby/object:Gem::Dependency
140
155
  name: rspec-rails
141
156
  requirement: !ruby/object:Gem::Requirement
142
157
  requirements:
143
158
  - - ">="
144
159
  - !ruby/object:Gem::Version
145
- version: '0'
160
+ version: '3.9'
146
161
  type: :development
147
162
  prerelease: false
148
163
  version_requirements: !ruby/object:Gem::Requirement
149
164
  requirements:
150
165
  - - ">="
151
166
  - !ruby/object:Gem::Version
152
- version: '0'
167
+ version: '3.9'
153
168
  - !ruby/object:Gem::Dependency
154
169
  name: timecop
155
170
  requirement: !ruby/object:Gem::Requirement
156
171
  requirements:
157
172
  - - ">="
158
173
  - !ruby/object:Gem::Version
159
- version: '0'
174
+ version: '0.9'
160
175
  type: :development
161
176
  prerelease: false
162
177
  version_requirements: !ruby/object:Gem::Requirement
163
178
  requirements:
164
179
  - - ">="
165
180
  - !ruby/object:Gem::Version
166
- version: '0'
181
+ version: '0.9'
182
+ - !ruby/object:Gem::Dependency
183
+ name: database_cleaner
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '1.7'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '1.7'
167
196
  description: Rails tagging system based on PostgreSQL arrays
168
197
  email:
169
198
  - igor.alexandrov@gmail.com
199
+ - andrey.morozov@jetrockets.ru
170
200
  executables: []
171
201
  extensions: []
172
202
  extra_rdoc_files: []
@@ -184,6 +214,9 @@ files:
184
214
  - Rakefile
185
215
  - bin/console
186
216
  - bin/setup
217
+ - gemfiles/rails5.gemfile
218
+ - gemfiles/rails52.gemfile
219
+ - gemfiles/rails6.gemfile
187
220
  - lib/generators/metka/strategies/materialized_view/materialized_view_generator.rb
188
221
  - lib/generators/metka/strategies/materialized_view/templates/migration.rb.erb
189
222
  - lib/generators/metka/strategies/view/templates/migration.rb.erb
@@ -194,7 +227,7 @@ files:
194
227
  - lib/metka/query_builder.rb
195
228
  - lib/metka/query_builder/all_tags_query.rb
196
229
  - lib/metka/query_builder/any_tags_query.rb
197
- - lib/metka/query_builder/exclude_tags_query.rb
230
+ - lib/metka/query_builder/base_query.rb
198
231
  - lib/metka/tag_list.rb
199
232
  - lib/metka/version.rb
200
233
  - metka.gemspec
@@ -210,14 +243,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
243
  requirements:
211
244
  - - ">="
212
245
  - !ruby/object:Gem::Version
213
- version: '0'
246
+ version: '2.5'
214
247
  required_rubygems_version: !ruby/object:Gem::Requirement
215
248
  requirements:
216
249
  - - ">="
217
250
  - !ruby/object:Gem::Version
218
251
  version: '0'
219
252
  requirements: []
220
- rubygems_version: 3.0.6
253
+ rubygems_version: 3.0.3
221
254
  signing_key:
222
255
  specification_version: 4
223
256
  summary: Rails tagging system based on PostgreSQL arrays
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Metka
4
- class ExcludeTagsQuery
5
- end
6
- end