Sha256: c3ef3451154f1be5d4695137163457f15d3f4c5112c4975b01425e80f04f838b

Contents?: true

Size: 1.02 KB

Versions: 5

Compression:

Stored size: 1.02 KB

Contents

module WhosDatedWho
  class Importer
    include RethinkDB::Shortcuts
    attr_reader :conn, :logger, :table_name

    def initialize(db, table_name)
      @conn       = r.connect(host: 'localhost', db: db || 'celebs')
      @logger     = Logger.new(STDOUT)
      @table_name = table_name
    end

    def fetch_and_import(celebs)
      celebs.each do |celeb|
        logger.info "Fetching #{celeb}"
        import_celeb(celeb)
      end
    end

    private

    def import_celeb(celeb)
      result = Client.new.fetch(celeb)
      logger.info "Importing #{celeb} to #{table_name}"
      create(result)
    rescue
      logger.error("Error importing #{celeb}, added to missing")
      add_to_missing_celebs(celeb)
    end

    def create(results)
      r.table(table_name).insert(JSON.parse(results.to_json)).run(conn)
    end

    def add_to_missing_celebs(celeb)
      first_name, last_name = celeb.split
      r.table("missing_#{table_name}").insert(
        first_name: first_name, last_name: last_name
      ).run(conn)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
whos_dated_who-1.0.4 lib/whos_dated_who/importer.rb
whos_dated_who-1.0.3 lib/whos_dated_who/importer.rb
whos_dated_who-1.0.2 lib/whos_dated_who/importer.rb
whos_dated_who-1.0.1 lib/whos_dated_who/importer.rb
whos_dated_who-1.0.0 lib/whos_dated_who/importer.rb