tapsoob 0.5.23-java → 0.5.25-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 +4 -4
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/Gemfile +1 -1
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/lib/tapsoob/chunksize.rb +0 -0
- data/lib/tapsoob/cli/data_stream.rb +0 -0
- data/lib/tapsoob/cli/root.rb +0 -5
- data/lib/tapsoob/cli/schema.rb +3 -2
- data/lib/tapsoob/cli.rb +0 -0
- data/lib/tapsoob/config.rb +0 -0
- data/lib/tapsoob/data_stream.rb +26 -6
- data/lib/tapsoob/errors.rb +0 -0
- data/lib/tapsoob/log.rb +0 -0
- data/lib/tapsoob/operation.rb +3 -1
- data/lib/tapsoob/progress_bar.rb +0 -0
- data/lib/tapsoob/railtie.rb +0 -0
- data/lib/tapsoob/schema.rb +0 -0
- data/lib/tapsoob/utils.rb +9 -14
- data/lib/tapsoob/version.rb +1 -1
- data/lib/tapsoob.rb +0 -0
- data/lib/tasks/tapsoob.rake +0 -0
- data/spec/lib/tapsoob/chunksize_spec.rb +0 -0
- data/spec/lib/tapsoob/version_spec.rb +0 -0
- data/spec/spec_helper.rb +0 -0
- data/tapsoob.gemspec +8 -9
- metadata +22 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7598763d461706f95f3f4da66603dc989a3dccbf2bae2b43e32101a47d73fb7
|
4
|
+
data.tar.gz: fb5ab2c06783cf3ffc2ffd2ff2f68e904c2aaa1144760f17e5e17dbd6f110062
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5003fc09f13d21d339384da694297268107c67e59ba314ae1191b7997496daa73cda88355d5fc172bcb36f61f870cdd480d6cd12175c6d4ca5f33e303d6cbab0
|
7
|
+
data.tar.gz: 4623748891328b90001dee1dfd9f8c868bad4ad34dd528bb72c2fe191323fb7382a6b38b51abb085d02cd70c81b3f0d69e88ed3604ec71dfe4965838b5dd9b7a
|
data/.gitignore
CHANGED
File without changes
|
data/.rspec
CHANGED
File without changes
|
data/Gemfile
CHANGED
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/lib/tapsoob/chunksize.rb
CHANGED
File without changes
|
File without changes
|
data/lib/tapsoob/cli/root.rb
CHANGED
data/lib/tapsoob/cli/schema.rb
CHANGED
@@ -9,8 +9,9 @@ module Tapsoob
|
|
9
9
|
desc "console DATABASE_URL", "Create an IRB REPL connected to a database"
|
10
10
|
def console(database_url)
|
11
11
|
$db = Sequel.connect(database_url)
|
12
|
-
require '
|
13
|
-
|
12
|
+
require 'irb'
|
13
|
+
ARGV.clear # otherwise all script parameters get passed to IRB
|
14
|
+
IRB.start
|
14
15
|
end
|
15
16
|
|
16
17
|
desc "dump DATABASE_URL", "Dump a database using a database URL"
|
data/lib/tapsoob/cli.rb
CHANGED
File without changes
|
data/lib/tapsoob/config.rb
CHANGED
File without changes
|
data/lib/tapsoob/data_stream.rb
CHANGED
@@ -87,14 +87,34 @@ module Tapsoob
|
|
87
87
|
|
88
88
|
def fetch_file(dump_path)
|
89
89
|
#state[:chunksize] = fetch_chunksize
|
90
|
-
|
91
|
-
|
90
|
+
# Read NDJSON format - each line is a separate JSON chunk
|
91
|
+
file_path = File.join(dump_path, "data", "#{table_name}.json")
|
92
|
+
|
93
|
+
# Parse all chunks and combine them
|
94
|
+
all_data = []
|
95
|
+
table_name_val = nil
|
96
|
+
header_val = nil
|
97
|
+
types_val = nil
|
98
|
+
|
99
|
+
File.readlines(file_path).each do |line|
|
100
|
+
chunk = JSON.parse(line.strip)
|
101
|
+
table_name_val ||= chunk["table_name"]
|
102
|
+
header_val ||= chunk["header"]
|
103
|
+
types_val ||= chunk["types"]
|
104
|
+
all_data.concat(chunk["data"]) if chunk["data"]
|
105
|
+
end
|
106
|
+
|
107
|
+
# Apply skip-duplicates if needed
|
108
|
+
all_data = all_data.uniq if @options[:"skip-duplicates"]
|
109
|
+
|
110
|
+
state[:size] = all_data.size
|
92
111
|
log.debug "DataStream#fetch_file"
|
112
|
+
|
93
113
|
rows = {
|
94
|
-
:table_name =>
|
95
|
-
:header =>
|
96
|
-
:data => (
|
97
|
-
:types =>
|
114
|
+
:table_name => table_name_val,
|
115
|
+
:header => header_val,
|
116
|
+
:data => (all_data[state[:offset], state[:chunksize]] || []),
|
117
|
+
:types => types_val
|
98
118
|
}
|
99
119
|
update_chunksize_stats
|
100
120
|
rows
|
data/lib/tapsoob/errors.rb
CHANGED
File without changes
|
data/lib/tapsoob/log.rb
CHANGED
File without changes
|
data/lib/tapsoob/operation.rb
CHANGED
@@ -375,7 +375,9 @@ module Tapsoob
|
|
375
375
|
idxs = {}
|
376
376
|
table_idxs = Dir.glob(File.join(dump_path, "indexes", "*.json")).map { |path| File.basename(path, '.json') }
|
377
377
|
table_idxs.each do |table_idx|
|
378
|
-
|
378
|
+
# Read NDJSON format - each line is a separate index
|
379
|
+
index_file = File.join(dump_path, "indexes", "#{table_idx}.json")
|
380
|
+
idxs[table_idx] = File.readlines(index_file).map { |line| JSON.parse(line.strip) }
|
379
381
|
end
|
380
382
|
|
381
383
|
return unless idxs.size > 0
|
data/lib/tapsoob/progress_bar.rb
CHANGED
File without changes
|
data/lib/tapsoob/railtie.rb
CHANGED
File without changes
|
data/lib/tapsoob/schema.rb
CHANGED
File without changes
|
data/lib/tapsoob/utils.rb
CHANGED
@@ -143,26 +143,21 @@ Data : #{data}
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def export_indexes(dump_path, table, index_data)
|
146
|
-
|
147
|
-
|
148
|
-
previous_data = JSON.parse(File.read(File.join(dump_path, "indexes", "#{table}.json")))
|
149
|
-
data = data + previous_data
|
150
|
-
end
|
146
|
+
# Use append-only writes to avoid O(n²) complexity
|
147
|
+
index_file = File.join(dump_path, "indexes", "#{table}.json")
|
151
148
|
|
152
|
-
File.open(
|
153
|
-
file.write(JSON.generate(
|
149
|
+
File.open(index_file, 'a') do |file|
|
150
|
+
file.write(JSON.generate(index_data) + "\n")
|
154
151
|
end
|
155
152
|
end
|
156
153
|
|
157
154
|
def export_rows(dump_path, table, row_data)
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
data[:data] = previous_data["data"] + row_data[:data] unless row_data[:data].nil?
|
162
|
-
end
|
155
|
+
# Use append-only writes to avoid O(n²) complexity
|
156
|
+
# Store metadata separately and append data chunks as NDJSON
|
157
|
+
data_file = File.join(dump_path, "data", "#{table}.json")
|
163
158
|
|
164
|
-
File.open(
|
165
|
-
file.write(JSON.generate(
|
159
|
+
File.open(data_file, 'a') do |file|
|
160
|
+
file.write(JSON.generate(row_data) + "\n")
|
166
161
|
end
|
167
162
|
end
|
168
163
|
|
data/lib/tapsoob/version.rb
CHANGED
data/lib/tapsoob.rb
CHANGED
File without changes
|
data/lib/tasks/tapsoob.rake
CHANGED
File without changes
|
File without changes
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
File without changes
|
data/tapsoob.gemspec
CHANGED
@@ -20,19 +20,18 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
22
|
# Dependencies
|
23
|
-
s.add_dependency "
|
24
|
-
s.add_dependency "
|
25
|
-
s.add_dependency "thor", "~> 1.2.1"
|
23
|
+
s.add_dependency "sequel", "~> 5.96.0"
|
24
|
+
s.add_dependency "thor", "~> 1.4.0"
|
26
25
|
|
27
26
|
if (RUBY_PLATFORM =~ /java/).nil?
|
28
|
-
s.add_development_dependency "mysql2", "~> 0.
|
29
|
-
s.add_development_dependency "pg", "~>
|
30
|
-
s.add_development_dependency "sqlite3", "~>
|
27
|
+
s.add_development_dependency "mysql2", "~> 0.5.7"
|
28
|
+
s.add_development_dependency "pg", "~> 1.6.2"
|
29
|
+
s.add_development_dependency "sqlite3", "~> 2.7.4"
|
31
30
|
else
|
32
31
|
s.platform = 'java'
|
33
32
|
|
34
|
-
s.add_dependency "jdbc-mysql", "~>
|
35
|
-
s.add_dependency "jdbc-postgres", "~> 42.
|
36
|
-
s.add_dependency "jdbc-sqlite3", "~> 3.
|
33
|
+
s.add_dependency "jdbc-mysql", "~> 9.1.0.1"
|
34
|
+
s.add_dependency "jdbc-postgres", "~> 42.6.0"
|
35
|
+
s.add_dependency "jdbc-sqlite3", "~> 3.46.1.1"
|
37
36
|
end
|
38
37
|
end
|
metadata
CHANGED
@@ -1,100 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tapsoob
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.25
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Félix Bellanger
|
8
8
|
- Michael Chrisco
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: sequel
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
name: ripl
|
21
|
-
prerelease: false
|
19
|
+
version: 5.96.0
|
22
20
|
type: :runtime
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - "~>"
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 0.7.1
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 5.70.0
|
34
|
-
name: sequel
|
35
21
|
prerelease: false
|
36
|
-
type: :runtime
|
37
22
|
version_requirements: !ruby/object:Gem::Requirement
|
38
23
|
requirements:
|
39
24
|
- - "~>"
|
40
25
|
- !ruby/object:Gem::Version
|
41
|
-
version: 5.
|
26
|
+
version: 5.96.0
|
42
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
48
|
-
name: thor
|
49
|
-
prerelease: false
|
33
|
+
version: 1.4.0
|
50
34
|
type: :runtime
|
35
|
+
prerelease: false
|
51
36
|
version_requirements: !ruby/object:Gem::Requirement
|
52
37
|
requirements:
|
53
38
|
- - "~>"
|
54
39
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.
|
40
|
+
version: 1.4.0
|
56
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
name: jdbc-mysql
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
name: jdbc-mysql
|
63
|
-
prerelease: false
|
47
|
+
version: 9.1.0.1
|
64
48
|
type: :runtime
|
49
|
+
prerelease: false
|
65
50
|
version_requirements: !ruby/object:Gem::Requirement
|
66
51
|
requirements:
|
67
52
|
- - "~>"
|
68
53
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
54
|
+
version: 9.1.0.1
|
70
55
|
- !ruby/object:Gem::Dependency
|
56
|
+
name: jdbc-postgres
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: 42.
|
76
|
-
name: jdbc-postgres
|
77
|
-
prerelease: false
|
61
|
+
version: 42.6.0
|
78
62
|
type: :runtime
|
63
|
+
prerelease: false
|
79
64
|
version_requirements: !ruby/object:Gem::Requirement
|
80
65
|
requirements:
|
81
66
|
- - "~>"
|
82
67
|
- !ruby/object:Gem::Version
|
83
|
-
version: 42.
|
68
|
+
version: 42.6.0
|
84
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
name: jdbc-sqlite3
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: 3.
|
90
|
-
name: jdbc-sqlite3
|
91
|
-
prerelease: false
|
75
|
+
version: 3.46.1.1
|
92
76
|
type: :runtime
|
77
|
+
prerelease: false
|
93
78
|
version_requirements: !ruby/object:Gem::Requirement
|
94
79
|
requirements:
|
95
80
|
- - "~>"
|
96
81
|
- !ruby/object:Gem::Version
|
97
|
-
version: 3.
|
82
|
+
version: 3.46.1.1
|
98
83
|
description: Simple tool to import/export databases inspired by taps but OOB, meaning
|
99
84
|
databases are imported/exported from the filesystem.
|
100
85
|
email: felix.bellanger@faveod.com
|
@@ -134,7 +119,6 @@ homepage: https://github.com/Keeguon/tapsoob
|
|
134
119
|
licenses:
|
135
120
|
- MIT
|
136
121
|
metadata: {}
|
137
|
-
post_install_message:
|
138
122
|
rdoc_options: []
|
139
123
|
require_paths:
|
140
124
|
- lib
|
@@ -149,8 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
133
|
- !ruby/object:Gem::Version
|
150
134
|
version: '0'
|
151
135
|
requirements: []
|
152
|
-
rubygems_version: 3.
|
153
|
-
signing_key:
|
136
|
+
rubygems_version: 3.6.9
|
154
137
|
specification_version: 4
|
155
138
|
summary: Simple tool to import/export databases.
|
156
139
|
test_files:
|