Class: Rgviz::ColumnVisitor
- Inherits:
-
Visitor
- Object
- Visitor
- Rgviz::ColumnVisitor
show all
- Defined in:
- lib/rgviz_rails/executor.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of ColumnVisitor.
425
426
427
428
|
# File 'lib/rgviz_rails/executor.rb', line 425
def initialize(executor)
@string = ''
@executor = executor
end
|
Instance Attribute Details
#string ⇒ Object
Returns the value of attribute string.
423
424
425
|
# File 'lib/rgviz_rails/executor.rb', line 423
def string
@string
end
|
Instance Method Details
#<<(string) ⇒ Object
430
431
432
|
# File 'lib/rgviz_rails/executor.rb', line 430
def <<(string)
@string += string
end
|
#escaped_string(str) ⇒ Object
519
520
521
522
|
# File 'lib/rgviz_rails/executor.rb', line 519
def escaped_string(str)
str = str.gsub("'", "''")
"'#{str}'"
end
|
#visit_aggregate_column(node) ⇒ Object
483
484
485
486
487
488
489
|
# File 'lib/rgviz_rails/executor.rb', line 483
def visit_aggregate_column(node)
@string += node.function.to_s
@string += '('
node.argument.accept self
@string += ')'
false
end
|
#visit_boolean_column(node) ⇒ Object
452
453
454
|
# File 'lib/rgviz_rails/executor.rb', line 452
def visit_boolean_column(node)
@string += node.value ? '1' : '0'
end
|
#visit_date_column(node) ⇒ Object
456
457
458
|
# File 'lib/rgviz_rails/executor.rb', line 456
def visit_date_column(node)
@string += "date #{escaped_string(node.value.to_s)}"
end
|
#visit_date_time_column(node) ⇒ Object
460
461
462
|
# File 'lib/rgviz_rails/executor.rb', line 460
def visit_date_time_column(node)
@string += "timestamp #{escaped_string(node.value.strftime("%Y-%m-%d %H:%M:%S"))}"
end
|
511
512
513
|
# File 'lib/rgviz_rails/executor.rb', line 511
def visit_format(node)
false
end
|
#visit_group_by(node) ⇒ Object
491
492
493
494
495
496
497
|
# File 'lib/rgviz_rails/executor.rb', line 491
def visit_group_by(node)
node.columns.each_with_index do |c, i|
@string += ',' if i > 0
c.accept self
end
false
end
|
#visit_id_column(node) ⇒ Object
434
435
436
437
438
439
440
441
442
|
# File 'lib/rgviz_rails/executor.rb', line 434
def visit_id_column(node)
klass, rails_col, joins = Rgviz::find_rails_col @executor.model_class, node.name
raise "Unknown column '#{node.name}'" unless rails_col
@string += ActiveRecord::Base.connection.quote_column_name(klass.table_name)
@string += '.'
@string += ActiveRecord::Base.connection.quote_column_name(rails_col.name)
@executor.add_joins joins
end
|
#visit_label(node) ⇒ Object
507
508
509
|
# File 'lib/rgviz_rails/executor.rb', line 507
def visit_label(node)
false
end
|
#visit_number_column(node) ⇒ Object
444
445
446
|
# File 'lib/rgviz_rails/executor.rb', line 444
def visit_number_column(node)
@string += node.value.to_s
end
|
#visit_option(node) ⇒ Object
515
516
517
|
# File 'lib/rgviz_rails/executor.rb', line 515
def visit_option(node)
false
end
|
#visit_pivot(node) ⇒ Object
499
500
501
502
503
504
505
|
# File 'lib/rgviz_rails/executor.rb', line 499
def visit_pivot(node)
node.columns.each_with_index do |c, i|
@string += ',' if i > 0
c.accept self
end
false
end
|
#visit_scalar_function_column(node) ⇒ Object
468
469
470
471
472
473
474
475
476
477
478
479
480
481
|
# File 'lib/rgviz_rails/executor.rb', line 468
def visit_scalar_function_column(node)
case node.function
when ScalarFunctionColumn::Sum, ScalarFunctionColumn::Difference,
ScalarFunctionColumn::Product, ScalarFunctionColumn::Quotient
@string += "("
node.arguments[0].accept self
@string += node.function.to_s
node.arguments[1].accept self
@string += ")"
else
@executor.adapter.accept_scalar_function_column(node, self)
end
false
end
|
#visit_string_column(node) ⇒ Object
448
449
450
|
# File 'lib/rgviz_rails/executor.rb', line 448
def visit_string_column(node)
@string += escaped_string(node.value)
end
|
#visit_time_of_day_column(node) ⇒ Object
464
465
466
|
# File 'lib/rgviz_rails/executor.rb', line 464
def visit_time_of_day_column(node)
@string += "time #{escaped_string(node.value.strftime("%H:%M:%S"))}"
end
|