class RailsRedshiftReplicator::Adapters::Generic

Public Class Methods

new(ar_client) click to toggle source
# File lib/rails_redshift_replicator/adapters/generic.rb, line 4
def initialize(ar_client)
  @ar_client = ar_client
end

Public Instance Methods

connection() click to toggle source

Returns the AR connection

# File lib/rails_redshift_replicator/adapters/generic.rb, line 9
def connection
  @connection ||= @ar_client
end
last_record_query_command(sql) click to toggle source

@return [String] id or timestamp

# File lib/rails_redshift_replicator/adapters/generic.rb, line 20
def last_record_query_command(sql)
  connection.exec_query(sql).first['_last_record']
end
query_command(sql) click to toggle source

Executes query using AR Adapter @param sql [String] sql to execute

# File lib/rails_redshift_replicator/adapters/generic.rb, line 15
def query_command(sql)
  connection.query sql
end
write(file_path, query_result) click to toggle source

Writes query results to a file @param file_path [String] path to output @param query_result [#each] Resultset from the query_command @return [Integer] number of records

# File lib/rails_redshift_replicator/adapters/generic.rb, line 28
def write(file_path, query_result)
  line_number = 0
  CSV.open(file_path, "w") do |csv|
    query_result.each do |row|
      csv << row.map{ |field| field.is_a?(String) ? field.gsub("\n", " ") : field }
      line_number+=1
    end
  end
  line_number
end