Class: Naginegi::EmbulkConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/naginegi/embulk_config.rb

Instance Method Summary collapse

Instance Method Details

#generate_config(db_configs, bq_config) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/naginegi/embulk_config.rb', line 3

def generate_config(db_configs, bq_config)
  bq_utility = BigQuery.new(bq_config)

  db_configs.keys.each do |db_name|
    db_config = db_configs[db_name]
    table_configs = all_table_configs[db_name]
    db_type = db_config['db_type']

    case db_type
    when 'mysql'
      sql_client = MySQL::MySQLClient.new(db_config)
    when 'postgresql'
      sql_client = PostgreSQL::PgClient.new(db_config)
    end

    table_configs.each do |table_config|
      write(
        "#{bq_config['schema_dir']}/#{db_name}",
        "#{table_config.name}.json",
        sql_client.generate_bq_schema(table_config.name)
      )
      write(
        "#{bq_config['config_dir']}/#{db_name}",
        "#{table_config.name}.yml",
        bq_utility.generate_embulk_config(
          db_name,
          db_config,
          table_config,
          sql_client.columns(table_config.name)
        )
      )
    end
  end
end