metka 0.1.2 → 2.0.0

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.
@@ -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