Sha256: ed95e243992dac4cfdb265b2a0429a9332deef4b8876c5c7f2057e0bc65f63ca

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

module RedshiftExtractor; class Extractor

  def initialize(args)
    @args = args
  end

  def config
    @config ||= OpenStruct.new(@args)
  end

  def run
    unload
    drop
    create
    copy
  end

  private

  def unloader
    Unload.new(
      aws_access_key_id: config.aws_access_key_id,
      aws_secret_access_key: config.aws_secret_access_key,
      s3_destination: config.unload_s3_destination,
      select_sql: config.unload_select_sql
    )
  end

  def unload
    source_connection.exec(unloader.unload_sql)
  end

  def dropper
    Drop.new(table_name: config.table_name)
  end

  def drop
    destination_connection.exec(dropper.drop_sql)
  end

  def create
    destination_connection.exec(config.create_sql)
  end

  def copier
    Copy.new(
      aws_access_key_id: config.aws_access_key_id,
      aws_secret_access_key: config.aws_secret_access_key,
      data_source: config.copy_data_source,
      table_name: config.table_name
    )
  end

  def copy
    destination_connection.exec(copier.copy_sql)
  end

  def destination_connection
    PGconn.connect(config.database_config_destination)
  end

  def source_connection
    PGconn.connect(config.database_config_source)
  end

end; end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
redshift_extractor-0.2.0 lib/redshift_extractor/extractor.rb