arel_toolkit 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28d6dfc92b5aebf97e6a22fa4ded2583f5d2184b1f0a8afc7ea4bc1951805b6d
4
- data.tar.gz: 9c72d8926233ec968b2c864886a422848bb0fd85c7e2828e86db0b9cee21144a
3
+ metadata.gz: a61ce95fcd49278974796940a1c783448978fef075e83157ee95e2e7fce1d42d
4
+ data.tar.gz: bb0431b90908d911f52b0d3b02c1acac0f0223274b73aa53305cebe1bdb77bd1
5
5
  SHA512:
6
- metadata.gz: 7aaab2a35e519f4c85ce56135efa0374b8806318791913c351b797972827e0c10a5e4b9d17f6d21d8abed7508db17170a199ec4186dc16a9036a4e460a767ca0
7
- data.tar.gz: 127121759494230ea9d82b7499812f942c44026f4ff7d22dc08b45d0b5a60ce1505b11bc4c6136391005aef17ef2932565e6266c189fd521c0869dac455bdf47
6
+ metadata.gz: aa03c27964e900c04f5af3178c7744eb8ef08a64537c1dc0594262cf4e5fffb1e0c5907ef891048bfa224f2d39f31fedc78aa7a8e0f03294af8193dc8c1e63c3
7
+ data.tar.gz: a2e1849d25ddaee84720b1ed10045a9fc6e0b926d555557f99c3498bdecb02de0eda06fb4a04f1f9a72a4f9b945a089b3ece8059cd04ad42f45d843446244b15
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.4.4](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.4) (2021-02-11)
4
+
5
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.4.3...v0.4.4)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Bump nokogiri from 1.10.8 to 1.11.1 [\#171](https://github.com/mvgijssel/arel_toolkit/pull/171) ([dependabot[bot]](https://github.com/apps/dependabot))
10
+
11
+ **Fixed bugs:**
12
+
13
+ - Fix conditional update and delete statements in Rails 6 [\#170](https://github.com/mvgijssel/arel_toolkit/pull/170) ([mvgijssel](https://github.com/mvgijssel))
14
+
3
15
  ## [v0.4.3](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.3) (2020-11-09)
4
16
 
5
17
  [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.4.2...v0.4.3)
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arel_toolkit (0.4.3)
4
+ arel_toolkit (0.4.4)
5
5
  activerecord
6
6
  pg (~> 1.1.4)
7
- pg_query (~> 1.2.0)
7
+ pg_query (~> 1.3)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -88,13 +88,14 @@ GEM
88
88
  lumberjack (1.0.13)
89
89
  memory_profiler (0.9.14)
90
90
  method_source (0.9.2)
91
- mini_portile2 (2.4.0)
91
+ mini_portile2 (2.5.0)
92
92
  minitest (5.14.1)
93
93
  multi_json (1.14.1)
94
94
  multipart-post (2.1.1)
95
95
  nenv (0.3.0)
96
- nokogiri (1.10.8)
97
- mini_portile2 (~> 2.4.0)
96
+ nokogiri (1.11.1)
97
+ mini_portile2 (~> 2.5.0)
98
+ racc (~> 1.4)
98
99
  notiffany (0.1.1)
99
100
  nenv (~> 0.1)
100
101
  shellany (~> 0.0)
@@ -104,7 +105,7 @@ GEM
104
105
  parser (2.6.3.0)
105
106
  ast (~> 2.4.0)
106
107
  pg (1.1.4)
107
- pg_query (1.2.0)
108
+ pg_query (1.3.0)
108
109
  pry (0.12.2)
109
110
  coderay (~> 1.1.0)
110
111
  method_source (~> 0.9.0)
@@ -123,6 +124,7 @@ GEM
123
124
  binding_of_caller (>= 0.7)
124
125
  pry (>= 0.9.11)
125
126
  public_suffix (4.0.1)
127
+ racc (1.5.2)
126
128
  rainbow (3.0.0)
127
129
  rake (13.0.1)
128
130
  rake-compiler (1.0.7)
data/arel_toolkit.gemspec CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.add_dependency 'activerecord'
29
29
  spec.add_dependency 'pg', '~> 1.1.4'
30
- spec.add_dependency 'pg_query', '~> 1.2.0'
30
+ spec.add_dependency 'pg_query', '~> 1.3'
31
31
 
32
32
  spec.add_development_dependency 'bundler', '~> 2.0'
33
33
  spec.add_development_dependency 'dpl', '~> 1.10.11'
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- arel_toolkit (0.4.2)
4
+ arel_toolkit (0.4.3)
5
5
  activerecord
6
6
  pg (~> 1.1.4)
7
- pg_query (~> 1.2.0)
7
+ pg_query (~> 1.3)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -104,7 +104,7 @@ GEM
104
104
  parser (2.7.2.0)
105
105
  ast (~> 2.4.1)
106
106
  pg (1.1.4)
107
- pg_query (1.2.0)
107
+ pg_query (1.3.0)
108
108
  pry (0.12.2)
109
109
  coderay (~> 1.1.0)
110
110
  method_source (~> 0.9.0)
@@ -207,4 +207,4 @@ DEPENDENCIES
207
207
  stackprof (~> 0.2)
208
208
 
209
209
  BUNDLED WITH
210
- 2.0.2
210
+ 2.1.4
@@ -31,10 +31,10 @@ GIT
31
31
  PATH
32
32
  remote: ..
33
33
  specs:
34
- arel_toolkit (0.4.2)
34
+ arel_toolkit (0.4.3)
35
35
  activerecord
36
36
  pg (~> 1.1.4)
37
- pg_query (~> 1.2.0)
37
+ pg_query (~> 1.3)
38
38
 
39
39
  GEM
40
40
  remote: https://rubygems.org/
@@ -154,7 +154,7 @@ GEM
154
154
  ast (~> 2.4.0)
155
155
  pg (1.1.4)
156
156
  pg_array_parser (0.0.9)
157
- pg_query (1.2.0)
157
+ pg_query (1.3.0)
158
158
  pry (0.12.2)
159
159
  coderay (~> 1.1.0)
160
160
  method_source (~> 0.9.0)
@@ -281,4 +281,4 @@ DEPENDENCIES
281
281
  stackprof (~> 0.2)
282
282
 
283
283
  BUNDLED WITH
284
- 2.0.2
284
+ 2.1.4
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- arel_toolkit (0.4.2)
4
+ arel_toolkit (0.4.3)
5
5
  activerecord
6
6
  pg (~> 1.1.4)
7
- pg_query (~> 1.2.0)
7
+ pg_query (~> 1.3)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -104,7 +104,7 @@ GEM
104
104
  parser (2.6.3.0)
105
105
  ast (~> 2.4.0)
106
106
  pg (1.1.4)
107
- pg_query (1.2.0)
107
+ pg_query (1.3.0)
108
108
  pry (0.12.2)
109
109
  coderay (~> 1.1.0)
110
110
  method_source (~> 0.9.0)
@@ -205,4 +205,4 @@ DEPENDENCIES
205
205
  stackprof (~> 0.2)
206
206
 
207
207
  BUNDLED WITH
208
- 2.0.2
208
+ 2.1.4
@@ -9,11 +9,14 @@ module Arel
9
9
  attr_accessor :using
10
10
  attr_accessor :with
11
11
  attr_accessor :returning
12
+ attr_accessor :orders
12
13
 
13
14
  def initialize(relation = nil, wheres = [])
14
15
  super
15
16
 
16
17
  @returning = []
18
+ @orders = []
19
+ @using = []
17
20
  end
18
21
  end
19
22
 
@@ -30,24 +33,26 @@ module Arel
30
33
  collector << ' '
31
34
  end
32
35
 
33
- collector << 'DELETE FROM '
34
- collector = visit o.relation, collector
35
-
36
- if o.using
37
- collector << ' USING '
38
- collector = inject_join o.using, collector, ', '
39
- end
36
+ if Gem.loaded_specs['activerecord'].version >= Gem::Version.new('6.0.0')
37
+ o = prepare_delete_statement(o)
40
38
 
41
- if o.wheres.any?
42
- collector << ' WHERE '
43
- collector = inject_join o.wheres, collector, ' AND '
39
+ if has_join_sources?(o)
40
+ collector << 'DELETE '
41
+ visit o.relation.left, collector
42
+ collector << ' FROM '
43
+ else
44
+ collector << 'DELETE FROM '
45
+ end
46
+ else
47
+ collector << 'DELETE FROM '
44
48
  end
45
49
 
46
- unless o.returning.empty?
47
- collector << ' RETURNING '
48
- collector = inject_join o.returning, collector, ', '
49
- end
50
+ collector = visit o.relation, collector
50
51
 
52
+ collect_nodes_for o.using, collector, ' USING ', ', '
53
+ collect_nodes_for o.wheres, collector, ' WHERE ', ' AND '
54
+ collect_nodes_for o.returning, collector, ' RETURNING ', ', '
55
+ collect_nodes_for o.orders, collector, ' ORDER BY '
51
56
  maybe_visit o.limit, collector
52
57
  end
53
58
  # rubocop:enable Metrics/AbcSize
@@ -24,16 +24,17 @@ module Arel
24
24
 
25
25
  module Visitors
26
26
  class ToSql
27
- # rubocop:disable Metrics/CyclomaticComplexity
28
27
  # rubocop:disable Metrics/AbcSize
29
- # rubocop:disable Metrics/PerceivedComplexity
30
28
  def visit_Arel_Nodes_UpdateStatement(o, collector)
31
29
  if o.with
32
30
  collector = visit o.with, collector
33
31
  collector << ' '
34
32
  end
35
33
 
36
- wheres = if o.orders.empty? && o.limit.nil?
34
+ wheres = if Gem.loaded_specs['activerecord'].version >= Gem::Version.new('6.0.0')
35
+ o = prepare_update_statement(o)
36
+ o.wheres
37
+ elsif o.orders.empty? && o.limit.nil?
37
38
  o.wheres
38
39
  else
39
40
  [Nodes::In.new(o.key, [build_subselect(o.key, o)])]
@@ -41,31 +42,16 @@ module Arel
41
42
 
42
43
  collector << 'UPDATE '
43
44
  collector = visit o.relation, collector
44
- unless o.values.empty?
45
- collector << ' SET '
46
- collector = inject_join o.values, collector, ', '
47
- end
48
-
49
- unless o.froms.empty?
50
- collector << ' FROM '
51
- collector = inject_join o.froms, collector, ', '
52
- end
53
45
 
54
- unless wheres.empty?
55
- collector << ' WHERE '
56
- collector = inject_join wheres, collector, ' AND '
57
- end
46
+ collect_nodes_for o.values, collector, ' SET '
47
+ collect_nodes_for o.froms, collector, ' FROM ', ', '
58
48
 
59
- unless o.returning.empty?
60
- collector << ' RETURNING '
61
- collector = inject_join o.returning, collector, ', '
62
- end
49
+ collect_nodes_for wheres, collector, ' WHERE ', ' AND '
50
+ collect_nodes_for o.returning, collector, ' RETURNING ', ', '
63
51
 
64
52
  collector
65
53
  end
66
54
  # rubocop:enable Metrics/AbcSize
67
- # rubocop:enable Metrics/CyclomaticComplexity
68
- # rubocop:enable Metrics/PerceivedComplexity
69
55
  end
70
56
 
71
57
  class Dot
@@ -1,3 +1,3 @@
1
1
  module ArelToolkit
2
- VERSION = '0.4.3'.freeze
2
+ VERSION = '0.4.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel_toolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - maarten
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-09 00:00:00.000000000 Z
11
+ date: 2021-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.2.0
47
+ version: '1.3'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.2.0
54
+ version: '1.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement