tapsoob 0.5.29-java → 0.5.31-java

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: f222b256d2bc44c66a833cb52cb11f5a4ca0c2cd5f629dd3b99b09e2a4514cfa
4
- data.tar.gz: a70f4cafee12c2be3541e0628612e0ae5ccf29600b5378f0c9d58a6feea24be8
3
+ metadata.gz: 33639d8716323773a82a677847fee240c76e0d01728f900efabb8f2eabaa858b
4
+ data.tar.gz: 54b4abf4d2fde04504cb086876565b0c283847b2e85ec7fd717b0132ebb3e6b0
5
5
  SHA512:
6
- metadata.gz: 1d47b6f360c042e49b7fb11174f07c05b822715c9132b07e1f89017c0f72d1807c1a68a5002f12e53f2e96ec744950491e2fe948717212dd9fd6e817452b0290
7
- data.tar.gz: c2c5ae50991609f6ebf6a8eaf61ad6da8717097d3aad50b8be9b6a79bd20a596dc2ebc9207f51e25ded59d79856692945daab7fcf5ebc7f15a427fdf31ec959d
6
+ metadata.gz: c369566e1e8f912f6c7121f09992ccad21f922b7133cfb12afa4469471805438e02b1e9edb49464506f049e04518a225762d1daf48e9b3694b5d9fb748652f4f
7
+ data.tar.gz: 067272f6c031d01f7ea0fbbbc6c20b8c9ab44aa53e58515bc1676e9c93d210a75659adfbb0ed9412812e0fbfbe8a57adca16f33a76bcd23a5ef495ceda535fb8
@@ -183,7 +183,8 @@ module Tapsoob
183
183
 
184
184
  progress = ProgressBar.new('Schema', tables.size)
185
185
  tables.each do |table_name, count|
186
- schema_data = Tapsoob::Schema.dump_table(database_url, table_name, @opts.slice(:indexes, :same_db))
186
+ # Reuse existing db connection for better performance
187
+ schema_data = Tapsoob::Schema.dump_table(db, table_name, @opts.slice(:indexes, :same_db))
187
188
  log.debug "Table: #{table_name}\n#{schema_data}\n"
188
189
  output = Tapsoob::Utils.export_schema(dump_path, table_name, schema_data)
189
190
  puts output if dump_path.nil? && output
@@ -405,7 +406,8 @@ module Tapsoob
405
406
  progress = ProgressBar.new('Schema', tables.size)
406
407
  tables.each do |table, count|
407
408
  log.debug "Loading '#{table}' schema\n"
408
- Tapsoob::Utils.load_schema(dump_path, database_url, table)
409
+ # Reuse existing db connection for better performance
410
+ Tapsoob::Utils.load_schema(dump_path, db, table)
409
411
  progress.inc(1)
410
412
  end
411
413
  progress.finish
@@ -31,9 +31,11 @@ END_MIG
31
31
  template.result(binding)
32
32
  end
33
33
 
34
- def dump_table(database_url, table, options)
34
+ def dump_table(database_url_or_db, table, options)
35
35
  table = table.to_sym
36
- Sequel.connect(database_url) do |db|
36
+ # Accept either a database URL or an existing connection object
37
+ if database_url_or_db.is_a?(Sequel::Database)
38
+ db = database_url_or_db
37
39
  db.extension :schema_dumper
38
40
  <<END_MIG
39
41
  Class.new(Sequel::Migration) do
@@ -46,6 +48,21 @@ Class.new(Sequel::Migration) do
46
48
  end
47
49
  end
48
50
  END_MIG
51
+ else
52
+ Sequel.connect(database_url_or_db) do |db|
53
+ db.extension :schema_dumper
54
+ <<END_MIG
55
+ Class.new(Sequel::Migration) do
56
+ def up
57
+ #{db.dump_table_schema(table, options)}
58
+ end
59
+
60
+ def down
61
+ drop_table("#{table}", if_exists: true)
62
+ end
63
+ end
64
+ END_MIG
65
+ end
49
66
  end
50
67
  end
51
68
 
@@ -86,8 +103,10 @@ END_MIG
86
103
  JSON.generate(idxs)
87
104
  end
88
105
 
89
- def load(database_url, schema, options = { drop: false })
90
- Sequel.connect(database_url) do |db|
106
+ def load(database_url_or_db, schema, options = { drop: false })
107
+ # Accept either a database URL or an existing connection object
108
+ if database_url_or_db.is_a?(Sequel::Database)
109
+ db = database_url_or_db
91
110
  db.extension :schema_dumper
92
111
  klass = eval(schema)
93
112
  if options[:drop]
@@ -101,6 +120,22 @@ END_MIG
101
120
  db.run("SET foreign_key_checks = 1") if [:mysql, :mysql2].include?(db.adapter_scheme)
102
121
  end
103
122
  klass.apply(db, :up)
123
+ else
124
+ Sequel.connect(database_url_or_db) do |db|
125
+ db.extension :schema_dumper
126
+ klass = eval(schema)
127
+ if options[:drop]
128
+ # Start special hack for MySQL
129
+ db.run("SET foreign_key_checks = 0") if [:mysql, :mysql2].include?(db.adapter_scheme)
130
+
131
+ # Run down migration
132
+ klass.apply(db, :down)
133
+
134
+ # End special hack for MySQL
135
+ db.run("SET foreign_key_checks = 1") if [:mysql, :mysql2].include?(db.adapter_scheme)
136
+ end
137
+ klass.apply(db, :up)
138
+ end
104
139
  end
105
140
  end
106
141
 
data/lib/tapsoob/utils.rb CHANGED
@@ -161,9 +161,16 @@ Data : #{data}
161
161
  end
162
162
  end
163
163
 
164
- def load_schema(dump_path, database_url, table)
165
- schema = File.join(dump_path, "schemas", "#{table}.rb")
166
- schema_bin(:load, database_url, schema.to_s)
164
+ def load_schema(dump_path, database_url_or_db, table)
165
+ schema_file = File.join(dump_path, "schemas", "#{table}.rb")
166
+ schema_content = File.read(schema_file)
167
+
168
+ # If we have a connection object, use it directly for better performance
169
+ if database_url_or_db.is_a?(Sequel::Database)
170
+ Tapsoob::Schema.load(database_url_or_db, schema_content)
171
+ else
172
+ schema_bin(:load, database_url_or_db, schema_file)
173
+ end
167
174
  end
168
175
 
169
176
  def load_indexes(database_url, index)
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Tapsoob
3
- VERSION = "0.5.29".freeze
3
+ VERSION = "0.5.31".freeze
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapsoob
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.29
4
+ version: 0.5.31
5
5
  platform: java
6
6
  authors:
7
7
  - Félix Bellanger