class PostgresUpsert::ModelToModelAdapter

Public Class Methods

new(destination_model, source_model, options = {}) click to toggle source
# File lib/postgres_upsert/model_to_model_adapter.rb, line 5
def initialize(destination_model, source_model, options = {})
  @destination_model = destination_model
  @source_model = source_model
  @options = options
end

Public Instance Methods

write() click to toggle source
# File lib/postgres_upsert/model_to_model_adapter.rb, line 11
def write
    source_table = @source_model.table_name
    source_conn = @source_model.connection.raw_connection

    to_stdout_sql = "COPY #{source_table} TO STDOUT"
  
    csv_string = CSV.generate do |csv|
      csv << @source_model.column_names # CSV header row
      source_conn.copy_data(to_stdout_sql) do
        while (line = source_conn.get_copy_data) do
          csv << line.split("\t")
        end
      end
    end
    io = StringIO.new(csv_string)
    Writer.new(@destination_model, io, @options).write
end

Private Instance Methods

get_columns() click to toggle source
# File lib/postgres_upsert/model_to_model_adapter.rb, line 31
def get_columns
  # columns_list = @options[:columns]
  # columns_list ||=
  @source.column_names
end