db_transformer 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6dc674b1a5f792e9613837570be21f04f1637b7401729f12ea1a2c14e167da7c
4
- data.tar.gz: d0d64a875a1ba3c28c49fb68e0b30f23dfeeb228b3ed65b0cc3167097570e08d
3
+ metadata.gz: 8eb35d534d2b34d0bc42c19ff1e191fc7000dc1f08af5f9ed81f263413f0db2e
4
+ data.tar.gz: 7e98aa240150ac159c6fb96715b3ee36a22eab9b44fdbaf2d1007e7789c6eb83
5
5
  SHA512:
6
- metadata.gz: 5ca2bf9416a5d4d6e8b9cc24291591b36320363ebaa22bfcf846d70f1e9a68679e8197649fbba1c89a744843baf8c8f9e6f25f51a8e700247aec7eca382434b0
7
- data.tar.gz: 3f6b4a8dabe3ab03de7744390bdea5da8936b3e3a783cbbe387ab16a22fae34e20a9e341ff068131513a09cc50ff2e8bc2d4d833ec4b3363eb439c8dc9f7425c
6
+ metadata.gz: d4b8aae519e2953538ed23b150dd4221f995181eb99e88e3d70e4eb588b26c3b5e98c04a91ccfbaf8b847d17454004941b89dc7d086e05788845f2da63325723
7
+ data.tar.gz: ecf6dd8ad95a8b587661ce298e66c2a4e6fe03a23181d51d51074c62c9a275a7a49c430333c26f3210b6673f16c862d2c46477c437ba3f94dc78654b1a11411b
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- db_transformer (0.1.0)
4
+ db_transformer (0.1.2)
5
5
  faker
6
6
  mysql2 (~> 0.5.0)
7
+ parallel (~> 1.22)
7
8
  sequel (~> 5.56)
8
9
  thor (~> 1.2)
9
10
 
@@ -17,6 +18,7 @@ GEM
17
18
  i18n (1.8.11)
18
19
  concurrent-ruby (~> 1.0)
19
20
  mysql2 (0.5.4)
21
+ parallel (1.22.1)
20
22
  rake (13.0.6)
21
23
  rspec (3.11.0)
22
24
  rspec-core (~> 3.11.0)
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency 'mysql2', "~> 0.5.0"
34
34
  spec.add_dependency 'sequel', '~> 5.56'
35
35
  spec.add_dependency 'thor', '~> 1.2'
36
+ spec.add_dependency 'parallel', '~> 1.22'
36
37
 
37
38
  # For more information and examples about making a new gem, checkout our
38
39
  # guide at: https://bundler.io/guides/creating_gem.html
@@ -10,8 +10,6 @@ module DbTransformer
10
10
  destination_database_client.run('SET foreign_key_checks = 0;')
11
11
 
12
12
  tables.each do |table_name|
13
- logger.info("Start copying `#{table_name}`")
14
-
15
13
  if @settings.dig('destination', 'options', 'force_replace')
16
14
  destination_database_client.run("DROP TABLE IF EXISTS #{table_name}")
17
15
  end
@@ -19,6 +17,12 @@ module DbTransformer
19
17
  create_table_query = source_database_client.fetch('SHOW CREATE TABLE ?', table_name).first[:'Create Table']
20
18
  create_table_query = create_table_query.gsub('CREATE TABLE', 'CREATE TABLE IF NOT EXISTS')
21
19
  destination_database_client.run(create_table_query)
20
+ end
21
+
22
+ Parallel.each(tables, in_threads: [source_database_max_connection, destination_database_max_connection].min) do |table_name|
23
+ destination_database_client.run('SET foreign_key_checks = 0;')
24
+
25
+ logger.info("Start copying `#{table_name}`")
22
26
 
23
27
  offset = 0
24
28
  loop do
@@ -72,6 +76,14 @@ module DbTransformer
72
76
  @destination_database_settings ||= @settings['destination'].reject { |k, _| k == 'options' }
73
77
  end
74
78
 
79
+ def source_database_max_connection
80
+ @settings['source']['max_connections'] || 4
81
+ end
82
+
83
+ def destination_database_max_connection
84
+ @settings['destination']['max_connections'] || 4
85
+ end
86
+
75
87
  def rules
76
88
  @settings['rules']
77
89
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DbTransformer
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
@@ -3,6 +3,7 @@
3
3
  require 'erb'
4
4
  require 'sequel'
5
5
  require 'logger'
6
+ require 'parallel'
6
7
  require 'yaml'
7
8
 
8
9
  require_relative 'db_transformer/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db_transformer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomoki Ichikawa
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: parallel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.22'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.22'
69
83
  description: ''
70
84
  email:
71
85
  - ichikawa@1060ki.com