Class: DataTaster::ExportContext
- Inherits:
-
Object
- Object
- DataTaster::ExportContext
- Defined in:
- lib/data_taster/export_context.rb,
sig/data_taster.rbs
Instance Attribute Summary collapse
-
#insert_table_name ⇒ String
readonly
Returns the value of attribute insert_table_name.
Class Method Summary collapse
Instance Method Summary collapse
- #format_row_tuple(columns, row, client) ⇒ String
-
#initialize(table_name, sanitize, insert_table_name: nil, column_types: {}) ⇒ ExportContext
constructor
A new instance of ExportContext.
Constructor Details
#initialize(table_name, sanitize, insert_table_name: nil, column_types: {}) ⇒ ExportContext
Returns a new instance of ExportContext.
5 6 7 8 9 10 |
# File 'lib/data_taster/export_context.rb', line 5 def initialize(table_name, sanitize, insert_table_name: nil, column_types: {}) @table_name = table_name @insert_table_name = insert_table_name || self.class.quote_ident(table_name) @rules = DataTaster::Sanitizer.new(table_name, sanitize).sanitization_rules @column_types = column_types.transform_keys(&:to_s) end |
Instance Attribute Details
#insert_table_name ⇒ String (readonly)
Returns the value of attribute insert_table_name.
16 17 18 |
# File 'lib/data_taster/export_context.rb', line 16 def insert_table_name @insert_table_name end |
Class Method Details
.quote_ident(name) ⇒ String
12 13 14 |
# File 'lib/data_taster/export_context.rb', line 12 def self.quote_ident(name) "`#{name.to_s.gsub('`', '``')}`" end |
Instance Method Details
#format_row_tuple(columns, row, client) ⇒ String
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/data_taster/export_context.rb', line 18 def format_row_tuple(columns, row, client) frags = columns.map do |col| col_key = col.to_s if @rules.key?(col_key) # the colunm has a sanitization rule DataTaster::Detergent.new(@table_name, col_key, @rules[col_key]) .insert_value_expression(row, client, column_types: @column_types) else DataTaster::SqlLiteral.format(client, row[col], column_type: @column_types[col_key]) end end "(#{frags.join(', ')})" end |