arel_toolkit 0.3.0 → 0.4.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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +3 -0
- data/.gitignore +4 -1
- data/.rubocop.yml +13 -5
- data/.travis.yml +7 -2
- data/Appraisals +9 -0
- data/CHANGELOG.md +19 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +22 -5
- data/README.md +59 -18
- data/arel_toolkit.gemspec +5 -1
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/arel_gems.gemfile +10 -0
- data/gemfiles/arel_gems.gemfile.lock +274 -0
- data/gemfiles/default.gemfile +5 -0
- data/gemfiles/default.gemfile.lock +198 -0
- data/lib/arel/enhance.rb +16 -0
- data/lib/arel/enhance/context_enhancer/arel_table.rb +75 -0
- data/lib/arel/enhance/node.rb +189 -0
- data/lib/arel/enhance/path.rb +38 -0
- data/lib/arel/enhance/path_node.rb +26 -0
- data/lib/arel/enhance/query.rb +36 -0
- data/lib/arel/enhance/visitor.rb +81 -0
- data/lib/arel/extensions.rb +24 -4
- data/lib/arel/extensions/active_record_type_caster_map.rb +7 -0
- data/lib/arel/extensions/array.rb +2 -9
- data/lib/arel/extensions/at_time_zone.rb +10 -3
- data/lib/arel/extensions/binary.rb +7 -0
- data/lib/arel/extensions/bit_string.rb +2 -9
- data/lib/arel/extensions/case.rb +17 -0
- data/lib/arel/extensions/conflict.rb +9 -0
- data/lib/arel/extensions/contains.rb +27 -5
- data/lib/arel/extensions/current_catalog.rb +4 -0
- data/lib/arel/extensions/current_date.rb +4 -0
- data/lib/arel/extensions/current_of_expression.rb +2 -9
- data/lib/arel/extensions/current_role.rb +4 -0
- data/lib/arel/extensions/current_row.rb +7 -0
- data/lib/arel/extensions/current_schema.rb +4 -0
- data/lib/arel/extensions/current_user.rb +4 -0
- data/lib/arel/extensions/dealocate.rb +31 -0
- data/lib/arel/extensions/default_values.rb +4 -0
- data/lib/arel/extensions/delete_manager.rb +22 -6
- data/lib/arel/extensions/delete_statement.rb +26 -9
- data/lib/arel/extensions/dot.rb +11 -0
- data/lib/arel/extensions/extract_from.rb +3 -10
- data/lib/arel/extensions/factorial.rb +10 -2
- data/lib/arel/extensions/false.rb +7 -0
- data/lib/arel/extensions/function.rb +42 -13
- data/lib/arel/extensions/indirection.rb +3 -12
- data/lib/arel/extensions/infer.rb +6 -6
- data/lib/arel/extensions/infix_operation.rb +17 -0
- data/lib/arel/extensions/insert_manager.rb +19 -3
- data/lib/arel/extensions/insert_statement.rb +30 -11
- data/lib/arel/extensions/into.rb +21 -0
- data/lib/arel/extensions/named_argument.rb +3 -8
- data/lib/arel/extensions/named_function.rb +7 -0
- data/lib/arel/extensions/ordering.rb +21 -6
- data/lib/arel/extensions/overlaps.rb +9 -0
- data/lib/arel/extensions/overlay.rb +9 -0
- data/lib/arel/extensions/position.rb +3 -8
- data/lib/arel/extensions/prepare.rb +39 -0
- data/lib/arel/extensions/row.rb +3 -8
- data/lib/arel/extensions/select_core.rb +58 -0
- data/lib/arel/extensions/select_manager.rb +22 -6
- data/lib/arel/extensions/select_statement.rb +31 -9
- data/lib/arel/extensions/session_user.rb +4 -0
- data/lib/arel/extensions/set_to_default.rb +4 -0
- data/lib/arel/extensions/substring.rb +8 -0
- data/lib/arel/extensions/table.rb +43 -10
- data/lib/arel/extensions/time_with_precision.rb +6 -0
- data/lib/arel/extensions/to_sql.rb +27 -0
- data/lib/arel/extensions/transaction.rb +3 -8
- data/lib/arel/extensions/tree_manager.rb +10 -0
- data/lib/arel/extensions/trim.rb +8 -0
- data/lib/arel/extensions/true.rb +7 -0
- data/lib/arel/extensions/type_cast.rb +7 -0
- data/lib/arel/extensions/unary.rb +7 -0
- data/lib/arel/extensions/unary_operation.rb +16 -0
- data/lib/arel/extensions/unknown.rb +4 -0
- data/lib/arel/extensions/update_manager.rb +22 -6
- data/lib/arel/extensions/update_statement.rb +27 -10
- data/lib/arel/extensions/user.rb +4 -0
- data/lib/arel/extensions/values_list.rb +15 -0
- data/lib/arel/extensions/variable_set.rb +9 -0
- data/lib/arel/extensions/variable_show.rb +3 -8
- data/lib/arel/middleware/chain.rb +1 -5
- data/lib/arel/middleware/railtie.rb +10 -0
- data/lib/arel/sql_to_arel.rb +6 -3
- data/lib/arel/sql_to_arel/pg_query_visitor.rb +43 -15
- data/lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb +1 -1
- data/lib/arel/sql_to_arel/result.rb +0 -4
- data/lib/arel/transformer.rb +7 -0
- data/lib/arel/transformer/add_schema_to_table.rb +26 -0
- data/lib/arel/transformer/remove_active_record_info.rb +42 -0
- data/lib/arel_toolkit.rb +8 -1
- data/lib/arel_toolkit/version.rb +1 -1
- metadata +81 -8
- data/lib/arel/extensions/unbound_column_reference.rb +0 -5
- data/lib/arel/sql_formatter.rb +0 -59
|
@@ -56,7 +56,7 @@ module Arel
|
|
|
56
56
|
'FRAMEOPTION_START_VALUE_PRECEDING' => 0x00400,
|
|
57
57
|
'FRAMEOPTION_END_VALUE_PRECEDING' => 0x00800,
|
|
58
58
|
'FRAMEOPTION_START_VALUE_FOLLOWING' => 0x01000,
|
|
59
|
-
'FRAMEOPTION_END_VALUE_FOLLOWING' => 0x02000
|
|
59
|
+
'FRAMEOPTION_END_VALUE_FOLLOWING' => 0x02000,
|
|
60
60
|
}.freeze
|
|
61
61
|
|
|
62
62
|
def biggest_detractable_number(number, candidates)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Arel
|
|
2
|
+
module Transformer
|
|
3
|
+
class AddSchemaToTable
|
|
4
|
+
attr_reader :schema_name
|
|
5
|
+
|
|
6
|
+
def initialize(schema_name)
|
|
7
|
+
@schema_name = schema_name
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# https://github.com/mvgijssel/arel_toolkit/issues/110
|
|
11
|
+
def call(arel, _context)
|
|
12
|
+
tree = Arel.enhance(arel)
|
|
13
|
+
|
|
14
|
+
tree.query(
|
|
15
|
+
class: Arel::Table,
|
|
16
|
+
schema_name: nil,
|
|
17
|
+
context: { range_variable: true },
|
|
18
|
+
).each do |node|
|
|
19
|
+
node['schema_name'].replace(schema_name)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
tree.object
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Arel
|
|
2
|
+
module Transformer
|
|
3
|
+
class RemoveActiveRecordInfo
|
|
4
|
+
class << self
|
|
5
|
+
def call(arel, _context)
|
|
6
|
+
tree = Arel.enhance(arel)
|
|
7
|
+
|
|
8
|
+
tree.query(class: Arel::Table).each do |node|
|
|
9
|
+
node['type_caster'].remove
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
tree.query(class: Arel::Nodes::BindParam).each do |node|
|
|
13
|
+
node.replace(
|
|
14
|
+
cast_for_database(node.object.value.value_for_database),
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
tree.object
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def cast_for_database(value)
|
|
24
|
+
case value
|
|
25
|
+
when String
|
|
26
|
+
Arel::Nodes.build_quoted(value)
|
|
27
|
+
when Integer
|
|
28
|
+
value
|
|
29
|
+
when TrueClass
|
|
30
|
+
Arel::Nodes::TypeCast.new(Arel::Nodes::Quoted.new('t'), 'bool')
|
|
31
|
+
when FalseClass
|
|
32
|
+
Arel::Nodes::TypeCast.new(Arel::Nodes::Quoted.new('f'), 'bool')
|
|
33
|
+
when Float
|
|
34
|
+
value
|
|
35
|
+
else
|
|
36
|
+
raise "Unknown value cast `#{value}` with class `#{value.class}`"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
data/lib/arel_toolkit.rb
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
# Make sure the gems are loaded before ArelToolkit
|
|
2
|
+
require 'postgres_ext' if Gem.loaded_specs.key?('postgres_ext')
|
|
3
|
+
require 'active_record_upsert' if Gem.loaded_specs.key?('active_record_upsert')
|
|
4
|
+
require 'pg_search' if Gem.loaded_specs.key?('pg_search')
|
|
5
|
+
require 'rails/railtie' if Gem.loaded_specs.key?('railties')
|
|
6
|
+
|
|
1
7
|
require 'arel_toolkit/version'
|
|
2
8
|
require 'arel'
|
|
3
9
|
require 'arel/extensions'
|
|
4
10
|
require 'arel/sql_to_arel'
|
|
5
11
|
require 'arel/middleware'
|
|
6
|
-
require 'arel/
|
|
12
|
+
require 'arel/enhance'
|
|
13
|
+
require 'arel/transformer'
|
|
7
14
|
|
|
8
15
|
module ArelToolkit
|
|
9
16
|
end
|
data/lib/arel_toolkit/version.rb
CHANGED
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
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- maarten
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-07-
|
|
11
|
+
date: 2019-07-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: arel
|
|
@@ -136,6 +136,34 @@ dependencies:
|
|
|
136
136
|
- - "~>"
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
138
|
version: '3.8'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: approvals
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - "~>"
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: 0.0.24
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - "~>"
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: 0.0.24
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: appraisal
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - "~>"
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: 2.2.0
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - "~>"
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: 2.2.0
|
|
139
167
|
- !ruby/object:Gem::Dependency
|
|
140
168
|
name: database_cleaner
|
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -182,16 +210,16 @@ dependencies:
|
|
|
182
210
|
name: rubocop
|
|
183
211
|
requirement: !ruby/object:Gem::Requirement
|
|
184
212
|
requirements:
|
|
185
|
-
- -
|
|
213
|
+
- - '='
|
|
186
214
|
- !ruby/object:Gem::Version
|
|
187
|
-
version:
|
|
215
|
+
version: 0.71.0
|
|
188
216
|
type: :development
|
|
189
217
|
prerelease: false
|
|
190
218
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
219
|
requirements:
|
|
192
|
-
- -
|
|
220
|
+
- - '='
|
|
193
221
|
- !ruby/object:Gem::Version
|
|
194
|
-
version:
|
|
222
|
+
version: 0.71.0
|
|
195
223
|
- !ruby/object:Gem::Dependency
|
|
196
224
|
name: guard
|
|
197
225
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -262,6 +290,20 @@ dependencies:
|
|
|
262
290
|
- - ">="
|
|
263
291
|
- !ruby/object:Gem::Version
|
|
264
292
|
version: '0'
|
|
293
|
+
- !ruby/object:Gem::Dependency
|
|
294
|
+
name: pry-doc
|
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
|
296
|
+
requirements:
|
|
297
|
+
- - ">="
|
|
298
|
+
- !ruby/object:Gem::Version
|
|
299
|
+
version: '0'
|
|
300
|
+
type: :development
|
|
301
|
+
prerelease: false
|
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
303
|
+
requirements:
|
|
304
|
+
- - ">="
|
|
305
|
+
- !ruby/object:Gem::Version
|
|
306
|
+
version: '0'
|
|
265
307
|
- !ruby/object:Gem::Dependency
|
|
266
308
|
name: pry-rescue
|
|
267
309
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -320,6 +362,7 @@ files:
|
|
|
320
362
|
- ".rubocop.yml"
|
|
321
363
|
- ".ruby-version"
|
|
322
364
|
- ".travis.yml"
|
|
365
|
+
- Appraisals
|
|
323
366
|
- CHANGELOG.md
|
|
324
367
|
- CODE_OF_CONDUCT.md
|
|
325
368
|
- Gemfile
|
|
@@ -331,8 +374,21 @@ files:
|
|
|
331
374
|
- arel_toolkit.gemspec
|
|
332
375
|
- bin/console
|
|
333
376
|
- bin/setup
|
|
377
|
+
- gemfiles/.bundle/config
|
|
378
|
+
- gemfiles/arel_gems.gemfile
|
|
379
|
+
- gemfiles/arel_gems.gemfile.lock
|
|
380
|
+
- gemfiles/default.gemfile
|
|
381
|
+
- gemfiles/default.gemfile.lock
|
|
382
|
+
- lib/arel/enhance.rb
|
|
383
|
+
- lib/arel/enhance/context_enhancer/arel_table.rb
|
|
384
|
+
- lib/arel/enhance/node.rb
|
|
385
|
+
- lib/arel/enhance/path.rb
|
|
386
|
+
- lib/arel/enhance/path_node.rb
|
|
387
|
+
- lib/arel/enhance/query.rb
|
|
388
|
+
- lib/arel/enhance/visitor.rb
|
|
334
389
|
- lib/arel/extensions.rb
|
|
335
390
|
- lib/arel/extensions/absolute.rb
|
|
391
|
+
- lib/arel/extensions/active_record_type_caster_map.rb
|
|
336
392
|
- lib/arel/extensions/all.rb
|
|
337
393
|
- lib/arel/extensions/any.rb
|
|
338
394
|
- lib/arel/extensions/array.rb
|
|
@@ -340,8 +396,10 @@ files:
|
|
|
340
396
|
- lib/arel/extensions/assignment.rb
|
|
341
397
|
- lib/arel/extensions/at_time_zone.rb
|
|
342
398
|
- lib/arel/extensions/between_symmetric.rb
|
|
399
|
+
- lib/arel/extensions/binary.rb
|
|
343
400
|
- lib/arel/extensions/bit_string.rb
|
|
344
401
|
- lib/arel/extensions/bitwise_xor.rb
|
|
402
|
+
- lib/arel/extensions/case.rb
|
|
345
403
|
- lib/arel/extensions/coalesce.rb
|
|
346
404
|
- lib/arel/extensions/conflict.rb
|
|
347
405
|
- lib/arel/extensions/contained_by.rb
|
|
@@ -354,27 +412,33 @@ files:
|
|
|
354
412
|
- lib/arel/extensions/current_date.rb
|
|
355
413
|
- lib/arel/extensions/current_of_expression.rb
|
|
356
414
|
- lib/arel/extensions/current_role.rb
|
|
415
|
+
- lib/arel/extensions/current_row.rb
|
|
357
416
|
- lib/arel/extensions/current_schema.rb
|
|
358
417
|
- lib/arel/extensions/current_time.rb
|
|
359
418
|
- lib/arel/extensions/current_timestamp.rb
|
|
360
419
|
- lib/arel/extensions/current_user.rb
|
|
420
|
+
- lib/arel/extensions/dealocate.rb
|
|
361
421
|
- lib/arel/extensions/default_values.rb
|
|
362
422
|
- lib/arel/extensions/delete_manager.rb
|
|
363
423
|
- lib/arel/extensions/delete_statement.rb
|
|
364
424
|
- lib/arel/extensions/distinct_from.rb
|
|
425
|
+
- lib/arel/extensions/dot.rb
|
|
365
426
|
- lib/arel/extensions/equality.rb
|
|
366
427
|
- lib/arel/extensions/except_all.rb
|
|
367
428
|
- lib/arel/extensions/exponentiation.rb
|
|
368
429
|
- lib/arel/extensions/extract_from.rb
|
|
369
430
|
- lib/arel/extensions/factorial.rb
|
|
431
|
+
- lib/arel/extensions/false.rb
|
|
370
432
|
- lib/arel/extensions/function.rb
|
|
371
433
|
- lib/arel/extensions/generate_series.rb
|
|
372
434
|
- lib/arel/extensions/greatest.rb
|
|
373
435
|
- lib/arel/extensions/indirection.rb
|
|
374
436
|
- lib/arel/extensions/infer.rb
|
|
437
|
+
- lib/arel/extensions/infix_operation.rb
|
|
375
438
|
- lib/arel/extensions/insert_manager.rb
|
|
376
439
|
- lib/arel/extensions/insert_statement.rb
|
|
377
440
|
- lib/arel/extensions/intersect_all.rb
|
|
441
|
+
- lib/arel/extensions/into.rb
|
|
378
442
|
- lib/arel/extensions/json_get_field.rb
|
|
379
443
|
- lib/arel/extensions/json_get_object.rb
|
|
380
444
|
- lib/arel/extensions/json_path_get_field.rb
|
|
@@ -401,9 +465,11 @@ files:
|
|
|
401
465
|
- lib/arel/extensions/overlaps.rb
|
|
402
466
|
- lib/arel/extensions/overlay.rb
|
|
403
467
|
- lib/arel/extensions/position.rb
|
|
468
|
+
- lib/arel/extensions/prepare.rb
|
|
404
469
|
- lib/arel/extensions/range_function.rb
|
|
405
470
|
- lib/arel/extensions/rank.rb
|
|
406
471
|
- lib/arel/extensions/row.rb
|
|
472
|
+
- lib/arel/extensions/select_core.rb
|
|
407
473
|
- lib/arel/extensions/select_manager.rb
|
|
408
474
|
- lib/arel/extensions/select_statement.rb
|
|
409
475
|
- lib/arel/extensions/session_user.rb
|
|
@@ -413,14 +479,19 @@ files:
|
|
|
413
479
|
- lib/arel/extensions/substring.rb
|
|
414
480
|
- lib/arel/extensions/table.rb
|
|
415
481
|
- lib/arel/extensions/time_with_precision.rb
|
|
482
|
+
- lib/arel/extensions/to_sql.rb
|
|
416
483
|
- lib/arel/extensions/transaction.rb
|
|
484
|
+
- lib/arel/extensions/tree_manager.rb
|
|
417
485
|
- lib/arel/extensions/trim.rb
|
|
486
|
+
- lib/arel/extensions/true.rb
|
|
418
487
|
- lib/arel/extensions/type_cast.rb
|
|
419
|
-
- lib/arel/extensions/
|
|
488
|
+
- lib/arel/extensions/unary.rb
|
|
489
|
+
- lib/arel/extensions/unary_operation.rb
|
|
420
490
|
- lib/arel/extensions/unknown.rb
|
|
421
491
|
- lib/arel/extensions/update_manager.rb
|
|
422
492
|
- lib/arel/extensions/update_statement.rb
|
|
423
493
|
- lib/arel/extensions/user.rb
|
|
494
|
+
- lib/arel/extensions/values_list.rb
|
|
424
495
|
- lib/arel/extensions/variable_set.rb
|
|
425
496
|
- lib/arel/extensions/variable_show.rb
|
|
426
497
|
- lib/arel/extensions/with_ordinality.rb
|
|
@@ -428,12 +499,14 @@ files:
|
|
|
428
499
|
- lib/arel/middleware/chain.rb
|
|
429
500
|
- lib/arel/middleware/postgresql_adapter.rb
|
|
430
501
|
- lib/arel/middleware/railtie.rb
|
|
431
|
-
- lib/arel/sql_formatter.rb
|
|
432
502
|
- lib/arel/sql_to_arel.rb
|
|
433
503
|
- lib/arel/sql_to_arel/error.rb
|
|
434
504
|
- lib/arel/sql_to_arel/pg_query_visitor.rb
|
|
435
505
|
- lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb
|
|
436
506
|
- lib/arel/sql_to_arel/result.rb
|
|
507
|
+
- lib/arel/transformer.rb
|
|
508
|
+
- lib/arel/transformer/add_schema_to_table.rb
|
|
509
|
+
- lib/arel/transformer/remove_active_record_info.rb
|
|
437
510
|
- lib/arel_toolkit.rb
|
|
438
511
|
- lib/arel_toolkit/version.rb
|
|
439
512
|
homepage: https://github.com/mvgijssel/arel_toolkit
|
data/lib/arel/sql_formatter.rb
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
module Arel
|
|
2
|
-
module Nodes
|
|
3
|
-
class Node
|
|
4
|
-
def to_formatted_sql(engine = Table.engine)
|
|
5
|
-
collector = Arel::Collectors::SQLString.new
|
|
6
|
-
Arel::SqlFormatter.new(engine.connection).accept self, collector
|
|
7
|
-
collector.value
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
class TreeManager
|
|
13
|
-
def to_formatted_sql(engine = Table.engine)
|
|
14
|
-
collector = Arel::Collectors::SQLString.new
|
|
15
|
-
Arel::SqlFormatter.new(engine.connection).accept @ast, collector
|
|
16
|
-
collector.value
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
class SqlFormatter < Arel::Visitors::PostgreSQL
|
|
21
|
-
def accept(object, collector)
|
|
22
|
-
super object, collector
|
|
23
|
-
collector << "\n"
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
# rubocop:disable Naming/MethodName
|
|
29
|
-
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
30
|
-
# rubocop:disable Metrics/AbcSize
|
|
31
|
-
def visit_Arel_Nodes_SelectCore(o, collector)
|
|
32
|
-
collector << "SELECT\n"
|
|
33
|
-
|
|
34
|
-
collector = maybe_visit o.top, collector
|
|
35
|
-
|
|
36
|
-
collector = maybe_visit o.set_quantifier, collector
|
|
37
|
-
|
|
38
|
-
collect_nodes_for(o.projections, collector, SPACE, ",\n")
|
|
39
|
-
|
|
40
|
-
if o.source && !o.source.empty?
|
|
41
|
-
collector << ' FROM '
|
|
42
|
-
collector = visit o.source, collector
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
collect_nodes_for o.wheres, collector, WHERE, AND
|
|
46
|
-
collect_nodes_for o.groups, collector, GROUP_BY
|
|
47
|
-
unless o.havings.empty?
|
|
48
|
-
collector << ' HAVING '
|
|
49
|
-
inject_join o.havings, collector, AND
|
|
50
|
-
end
|
|
51
|
-
collect_nodes_for o.windows, collector, WINDOW
|
|
52
|
-
|
|
53
|
-
collector
|
|
54
|
-
end
|
|
55
|
-
# rubocop:enable Metrics/AbcSize
|
|
56
|
-
# rubocop:enable Naming/MethodName
|
|
57
|
-
# rubocop:enable Naming/UncommunicativeMethodParamName
|
|
58
|
-
end
|
|
59
|
-
end
|