Class: DataTaster::ExportContext

Inherits:
Object
  • Object
show all
Defined in:
lib/data_taster/export_context.rb,
sig/data_taster.rbs

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(table_name, sanitize, insert_table_name: nil, column_types: {}) ⇒ ExportContext

Returns a new instance of ExportContext.

Parameters:

  • (defaults to: nil)
  • (defaults to: {})


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_nameString (readonly)

Returns the value of attribute insert_table_name.

Returns:



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

Parameters:

Returns:



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

Parameters:

Returns:



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