arel_extensions 1.1.8 → 1.1.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,17 +28,17 @@ module ArelExtensions
28
28
  collector << ")"
29
29
  collector
30
30
  end
31
-
32
- def visit_ArelExtensions_Nodes_Log10 o, collector
33
- collector << "LOG10("
34
- o.expressions.each_with_index { |arg, i|
35
- collector << Arel::Visitors::ToSql::COMMA unless i == 0
36
- collector = visit arg, collector
37
- }
38
- collector << ")"
39
- collector
40
- end
41
-
31
+
32
+ def visit_ArelExtensions_Nodes_Log10 o, collector
33
+ collector << "LOG10("
34
+ o.expressions.each_with_index { |arg, i|
35
+ collector << Arel::Visitors::ToSql::COMMA unless i == 0
36
+ collector = visit arg, collector
37
+ }
38
+ collector << ")"
39
+ collector
40
+ end
41
+
42
42
  def visit_ArelExtensions_Nodes_Power o, collector
43
43
  collector << "POWER("
44
44
  o.expressions.each_with_index { |arg, i|
@@ -52,18 +52,16 @@ module ArelExtensions
52
52
  def visit_ArelExtensions_Nodes_IsNull o, collector
53
53
  collector << "("
54
54
  collector = visit o.left, collector
55
- # collector << Arel::Visitors::MSSQL::COMMA
56
55
  collector << " IS NULL)"
57
56
  collector
58
57
  end
59
-
60
- def visit_ArelExtensions_Nodes_IsNotNull o, collector
61
- collector << "("
62
- collector = visit o.left, collector
63
- # collector << Arel::Visitors::MSSQL::COMMA
64
- collector << " IS NOT NULL)"
65
- collector
66
- end
58
+
59
+ def visit_ArelExtensions_Nodes_IsNotNull o, collector
60
+ collector << "("
61
+ collector = visit o.left, collector
62
+ collector << " IS NOT NULL)"
63
+ collector
64
+ end
67
65
 
68
66
  def visit_ArelExtensions_Nodes_Concat o, collector
69
67
  collector << "CONCAT("
@@ -74,7 +72,7 @@ module ArelExtensions
74
72
  collector << ")"
75
73
  collector
76
74
  end
77
-
75
+
78
76
  def visit_ArelExtensions_Nodes_Repeat o, collector
79
77
  collector << "REPLICATE("
80
78
  o.expressions.each_with_index { |arg, i|
@@ -310,8 +308,8 @@ module ArelExtensions
310
308
  collector
311
309
  end
312
310
  end
313
-
314
- def visit_ArelExtensions_Nodes_AiMatches o, collector
311
+
312
+ def visit_ArelExtensions_Nodes_AiMatches o, collector
315
313
  collector = visit o.left.ai_collate, collector
316
314
  collector << ' LIKE '
317
315
  collector = visit o.right.ai_collate, collector
@@ -322,8 +320,8 @@ module ArelExtensions
322
320
  collector
323
321
  end
324
322
  end
325
-
326
- def visit_ArelExtensions_Nodes_AiIMatches o, collector
323
+
324
+ def visit_ArelExtensions_Nodes_AiIMatches o, collector
327
325
  collector = visit o.left.collate(true,true), collector
328
326
  collector << ' LIKE '
329
327
  collector = visit o.right.collate(true,true), collector
@@ -335,7 +333,7 @@ module ArelExtensions
335
333
  end
336
334
  end
337
335
 
338
- def visit_ArelExtensions_Nodes_SMatches o, collector
336
+ def visit_ArelExtensions_Nodes_SMatches o, collector
339
337
  collector = visit o.left.collate, collector
340
338
  collector << ' LIKE '
341
339
  collector = visit o.right.collate, collector
@@ -346,8 +344,8 @@ module ArelExtensions
346
344
  collector
347
345
  end
348
346
  end
349
-
350
- def visit_ArelExtensions_Nodes_Collate o, collector
347
+
348
+ def visit_ArelExtensions_Nodes_Collate o, collector
351
349
  if o.ai && o.ci
352
350
  collector = visit o.expressions.first, collector
353
351
  collector << ' COLLATE Latin1_General_CI_AI'
@@ -377,14 +375,14 @@ module ArelExtensions
377
375
  collector
378
376
  end
379
377
 
380
- # TODO;
378
+ # TODO;
381
379
  def visit_ArelExtensions_Nodes_GroupConcat o, collector
382
380
  collector << "(STRING_AGG("
383
381
  collector = visit o.left, collector
384
382
  collector << Arel::Visitors::Oracle::COMMA
385
383
  if o.right && o.right != 'NULL'
386
384
  collector = visit o.right, collector
387
- else
385
+ else
388
386
  collector = visit Arel::Nodes.build_quoted(','), collector
389
387
  end
390
388
  collector << ") WITHIN GROUP (ORDER BY "
@@ -430,84 +428,99 @@ module ArelExtensions
430
428
  collector
431
429
  end
432
430
 
433
- def visit_ArelExtensions_Nodes_FormattedNumber o, collector
434
- col = o.left.coalesce(0)
435
- locale = Arel::Nodes.build_quoted(o.locale.tr('_','-'))
436
- param = Arel::Nodes.build_quoted("N#{o.precision}")
437
- sign = ArelExtensions::Nodes::Case.new.when(col<0).
438
- then('-').
439
- else(o.flags.include?('+') ? '+' : (o.flags.include?(' ') ? ' ' : ''))
440
- sign_length = o.flags.include?('+') || o.flags.include?(' ') ?
441
- Arel::Nodes.build_quoted(1) :
442
- ArelExtensions::Nodes::Case.new.when(col<0).then(1).else(0)
443
-
444
- if o.scientific_notation
445
- number = ArelExtensions::Nodes::Concat.new([
446
- Arel::Nodes::NamedFunction.new('FORMAT',[
447
- col.abs/Arel::Nodes.build_quoted(10).pow(col.abs.log10.floor),
448
- param,
449
- locale
450
- ]),
451
- o.type,
452
- Arel::Nodes::NamedFunction.new('FORMAT',[
453
- col.abs.log10.floor,
454
- Arel::Nodes.build_quoted('N0'),
455
- locale
456
- ])
457
- ])
458
- else
459
- number = Arel::Nodes::NamedFunction.new('FORMAT',[
460
- Arel::Nodes.build_quoted(col.abs),
461
- param,
462
- locale
463
- ])
464
- end
465
-
466
- repeated_char = (o.width == 0) ? Arel::Nodes.build_quoted('') : ArelExtensions::Nodes::Case.new().
467
- when(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length)>0).
468
- then(Arel::Nodes.build_quoted(
469
- o.flags.include?('-') ? ' ' : (o.flags.include?('0') ? '0' : ' ')
470
- ).repeat(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length))
471
- ).
472
- else('')
473
- before = (!o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
474
- middle = (o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
475
- after = o.flags.include?('-') ? repeated_char : ''
476
- full_number =
477
- ArelExtensions::Nodes::Concat.new([
478
- before,
479
- sign,
480
- middle,
481
- number,
482
- after
483
- ])
484
- collector = visit ArelExtensions::Nodes::Concat.new([Arel::Nodes.build_quoted(o.prefix),full_number,Arel::Nodes.build_quoted(o.suffix)]), collector
485
- collector
486
- end
487
-
488
- def visit_ArelExtensions_Nodes_Std o, collector
489
- collector << (o.unbiased_estimator ? "STDEV(" : "STDEVP(")
490
- visit o.left, collector
491
- collector << ")"
492
- collector
493
- end
494
-
495
- def visit_ArelExtensions_Nodes_Variance o, collector
496
- collector << (o.unbiased_estimator ? "VAR(" : "VARP(")
497
- visit o.left, collector
498
- collector << ")"
499
- collector
500
- end
501
-
502
-
503
- def visit_ArelExtensions_Nodes_LevenshteinDistance o, collector
504
- collector << "dbo.LEVENSHTEIN_DISTANCE("
505
- collector = visit o.left, collector
506
- collector << Arel::Visitors::ToSql::COMMA
507
- collector = visit o.right, collector
508
- collector << ')'
509
- collector
510
- end
431
+ def visit_ArelExtensions_Nodes_FormattedNumber o, collector
432
+ col = o.left.coalesce(0)
433
+ locale = Arel::Nodes.build_quoted(o.locale.tr('_','-'))
434
+ param = Arel::Nodes.build_quoted("N#{o.precision}")
435
+ sign = ArelExtensions::Nodes::Case.new.when(col<0).
436
+ then('-').
437
+ else(o.flags.include?('+') ? '+' : (o.flags.include?(' ') ? ' ' : ''))
438
+ sign_length = o.flags.include?('+') || o.flags.include?(' ') ?
439
+ Arel::Nodes.build_quoted(1) :
440
+ ArelExtensions::Nodes::Case.new.when(col<0).then(1).else(0)
441
+
442
+ if o.scientific_notation
443
+ number = ArelExtensions::Nodes::Concat.new([
444
+ Arel::Nodes::NamedFunction.new('FORMAT',[
445
+ col.abs/Arel::Nodes.build_quoted(10).pow(col.abs.log10.floor),
446
+ param,
447
+ locale
448
+ ]),
449
+ o.type,
450
+ Arel::Nodes::NamedFunction.new('FORMAT',[
451
+ col.abs.log10.floor,
452
+ Arel::Nodes.build_quoted('N0'),
453
+ locale
454
+ ])
455
+ ])
456
+ else
457
+ number = Arel::Nodes::NamedFunction.new('FORMAT',[
458
+ Arel::Nodes.build_quoted(col.abs),
459
+ param,
460
+ locale
461
+ ])
462
+ end
463
+
464
+ repeated_char = (o.width == 0) ? Arel::Nodes.build_quoted('') : ArelExtensions::Nodes::Case.new().
465
+ when(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length)>0).
466
+ then(Arel::Nodes.build_quoted(
467
+ o.flags.include?('-') ? ' ' : (o.flags.include?('0') ? '0' : ' ')
468
+ ).repeat(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length))
469
+ ).
470
+ else('')
471
+ before = (!o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
472
+ middle = (o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
473
+ after = o.flags.include?('-') ? repeated_char : ''
474
+ full_number =
475
+ ArelExtensions::Nodes::Concat.new([
476
+ before,
477
+ sign,
478
+ middle,
479
+ number,
480
+ after
481
+ ])
482
+ collector = visit ArelExtensions::Nodes::Concat.new([Arel::Nodes.build_quoted(o.prefix),full_number,Arel::Nodes.build_quoted(o.suffix)]), collector
483
+ collector
484
+ end
485
+
486
+ def visit_ArelExtensions_Nodes_Std o, collector
487
+ collector << (o.unbiased_estimator ? "STDEV(" : "STDEVP(")
488
+ visit o.left, collector
489
+ collector << ")"
490
+ collector
491
+ end
492
+
493
+ def visit_ArelExtensions_Nodes_Variance o, collector
494
+ collector << (o.unbiased_estimator ? "VAR(" : "VARP(")
495
+ visit o.left, collector
496
+ collector << ")"
497
+ collector
498
+ end
499
+
500
+
501
+ def visit_ArelExtensions_Nodes_LevenshteinDistance o, collector
502
+ collector << "dbo.LEVENSHTEIN_DISTANCE("
503
+ collector = visit o.left, collector
504
+ collector << Arel::Visitors::ToSql::COMMA
505
+ collector = visit o.right, collector
506
+ collector << ')'
507
+ collector
508
+ end
509
+
510
+
511
+ def visit_ArelExtensions_Nodes_JsonGet o,collector
512
+ collector << 'JSON_VALUE('
513
+ collector = visit o.hash, collector
514
+ collector << Arel::Visitors::MySQL::COMMA
515
+ if o.key.is_a?(Integer)
516
+ collector << "\"$[#{o.key}]\""
517
+ else
518
+ collector = visit Arel::Nodes.build_quoted('$.')+o.key, collector
519
+ end
520
+ collector << ')'
521
+ collector
522
+ end
523
+
511
524
 
512
525
  end
513
526
  end