arql 0.2.14 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acc076bc57fba6651a6d3b5c5232e002d0ad3c23dffb4c11b09a5f4697ec65b5
4
- data.tar.gz: 9a868a87e0d9658800de3740b6b42697cc65c07535b76c67bc88d38c37c82433
3
+ metadata.gz: 9d10b12fd753e5e8970108008da89ed6dc25b0fd0a920e5a4d4ca52e1bfeed41
4
+ data.tar.gz: 0b47045c868b4897b0fd0f4efbb59bc66257f572b04295f3d25a90fe3f633f0d
5
5
  SHA512:
6
- metadata.gz: 6dbaa27d969c85aea66fc13d443d91080cbfa3550a4728a20440385927a6527ff758dc23591f1b220e0b2c0f9ed5f4012609ce00c655251be64f22605f2f39c8
7
- data.tar.gz: 06cb755475b4f6cffec68aa681fea2706577f01f0c0771024f79b7f9f92a039cfb35e815ed251d50198229a908051b1c103828d773481f29d11a33c5b5417a5d
6
+ metadata.gz: 5e7833f356b11d0b3840f5afddb4a6582173b67e4033a428cdb82c7933648921c090922a1168e01b4675d4cf49c4011de4b78bfe27cb0f93a98934527676538d
7
+ data.tar.gz: b198b84d7b3cd9767bfb5f7a55f57e5bbed39a387fa080536c7c9ccfc65db16efa3d8b5bac51cb1d0801d04c14e102b723bd871f6ddff9872b27e62fedb1dd9b
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arql (0.2.14)
5
- activerecord (~> 6.0.3)
4
+ arql (0.3.3)
5
+ activerecord (>= 6.0.3, < 6.2.0)
6
6
  activesupport (~> 6.0.3)
7
7
  caxlsx (~> 3.0.2)
8
8
  composite_primary_keys (~> 12.0.3)
@@ -10,7 +10,7 @@ PATH
10
10
  net-ssh-gateway (~> 2.0.0)
11
11
  pry (~> 0.13.1)
12
12
  pry-byebug (~> 3.9.0)
13
- pry-doc (~> 1.1.0)
13
+ pry-doc (>= 1.0.0)
14
14
  rainbow (~> 3.0.0)
15
15
  roo (~> 2.8.3)
16
16
  sqlite3 (~> 1.4)
@@ -20,65 +20,69 @@ PATH
20
20
  GEM
21
21
  remote: https://rubygems.org/
22
22
  specs:
23
- activemodel (6.0.3.4)
24
- activesupport (= 6.0.3.4)
25
- activerecord (6.0.3.4)
26
- activemodel (= 6.0.3.4)
27
- activesupport (= 6.0.3.4)
28
- activesupport (6.0.3.4)
23
+ activemodel (6.0.4.4)
24
+ activesupport (= 6.0.4.4)
25
+ activerecord (6.0.4.4)
26
+ activemodel (= 6.0.4.4)
27
+ activesupport (= 6.0.4.4)
28
+ activesupport (6.0.4.4)
29
29
  concurrent-ruby (~> 1.0, >= 1.0.2)
30
30
  i18n (>= 0.7, < 2)
31
31
  minitest (~> 5.1)
32
32
  tzinfo (~> 1.1)
33
33
  zeitwerk (~> 2.2, >= 2.2.2)
34
34
  byebug (11.1.3)
35
- caxlsx (3.0.2)
35
+ caxlsx (3.0.4)
36
36
  htmlentities (~> 4.3, >= 4.3.4)
37
37
  mimemagic (~> 0.3)
38
38
  nokogiri (~> 1.10, >= 1.10.4)
39
39
  rubyzip (>= 1.3.0, < 3)
40
40
  coderay (1.1.3)
41
- composite_primary_keys (12.0.3)
41
+ composite_primary_keys (12.0.10)
42
42
  activerecord (~> 6.0.0)
43
- concurrent-ruby (1.1.7)
43
+ concurrent-ruby (1.1.9)
44
44
  htmlentities (4.3.4)
45
- i18n (1.8.5)
45
+ i18n (1.8.11)
46
46
  concurrent-ruby (~> 1.0)
47
47
  method_source (1.0.0)
48
- mimemagic (0.3.5)
49
- mini_portile2 (2.4.0)
50
- minitest (5.14.2)
48
+ mimemagic (0.4.3)
49
+ nokogiri (~> 1)
50
+ rake
51
+ minitest (5.15.0)
51
52
  mysql2 (0.5.3)
52
53
  net-ssh (6.1.0)
53
54
  net-ssh-gateway (2.0.0)
54
55
  net-ssh (>= 4.0.0)
55
- nokogiri (1.10.10)
56
- mini_portile2 (~> 2.4.0)
56
+ nokogiri (1.13.0-x86_64-darwin)
57
+ racc (~> 1.4)
57
58
  pry (0.13.1)
58
59
  coderay (~> 1.1)
59
60
  method_source (~> 1.0)
60
61
  pry-byebug (3.9.0)
61
62
  byebug (~> 11.0)
62
63
  pry (~> 0.13.0)
63
- pry-doc (1.1.0)
64
+ pry-doc (1.3.0)
64
65
  pry (~> 0.11)
65
66
  yard (~> 0.9.11)
67
+ racc (1.6.0)
66
68
  rainbow (3.0.0)
67
69
  rake (12.3.3)
68
70
  roo (2.8.3)
69
71
  nokogiri (~> 1)
70
72
  rubyzip (>= 1.3.0, < 3.0.0)
71
- rubyzip (2.3.0)
73
+ rubyzip (2.3.2)
72
74
  sqlite3 (1.4.2)
73
75
  table_print (1.5.7)
74
76
  terminal-table (1.8.0)
75
77
  unicode-display_width (~> 1.1, >= 1.1.1)
76
78
  thread_safe (0.3.6)
77
- tzinfo (1.2.8)
79
+ tzinfo (1.2.9)
78
80
  thread_safe (~> 0.1)
79
- unicode-display_width (1.7.0)
80
- yard (0.9.25)
81
- zeitwerk (2.4.2)
81
+ unicode-display_width (1.8.0)
82
+ webrick (1.7.0)
83
+ yard (0.9.27)
84
+ webrick (~> 1.7.0)
85
+ zeitwerk (2.5.3)
82
86
 
83
87
  PLATFORMS
84
88
  ruby
@@ -88,4 +92,4 @@ DEPENDENCIES
88
92
  rake (~> 12.0)
89
93
 
90
94
  BUNDLED WITH
91
- 2.1.4
95
+ 2.2.3
data/arql.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.description = %{Use ActiveRecord and Pry as your favorite SQL query editor.}
11
11
  spec.homepage = "https://github.com/lululau/arql"
12
12
  spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
14
14
 
15
15
 
16
16
 
@@ -28,13 +28,13 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency 'sqlite3', '~> 1.4'
29
29
  # spec.add_dependency 'activerecord-sqlserver-adapter'
30
30
  # spec.add_dependency 'activerecord-oracle_enhanced-adapter'
31
- spec.add_dependency 'activerecord', '~> 6.0.3'
31
+ spec.add_dependency 'activerecord', '>= 6.0.3', '< 6.2.0'
32
32
  spec.add_dependency 'composite_primary_keys', '~> 12.0.3'
33
33
  spec.add_dependency 'activesupport', '~> 6.0.3'
34
34
  spec.add_dependency 'net-ssh-gateway', '~> 2.0.0'
35
35
  spec.add_dependency 'pry', '~> 0.13.1'
36
36
  spec.add_dependency 'pry-byebug', '~> 3.9.0'
37
- spec.add_dependency 'pry-doc', '~> 1.1.0'
37
+ spec.add_dependency 'pry-doc', '>= 1.0.0'
38
38
  spec.add_dependency 'rainbow', '~> 3.0.0'
39
39
  spec.add_dependency 'terminal-table', '~> 1.8.0'
40
40
  spec.add_dependency 'table_print', '~> 1.5.6'
data/lib/arql/app.rb CHANGED
@@ -4,7 +4,7 @@ module Arql
4
4
  class App
5
5
 
6
6
  class << self
7
- attr_accessor :log_io, :env, :prompt, :instance
7
+ attr_accessor :log_io, :env, :prompt, :instance, :connect_options
8
8
 
9
9
  def config
10
10
  @@effective_config
@@ -27,7 +27,8 @@ module Arql
27
27
  require "arql/definition"
28
28
  @options = options
29
29
  App.env = @options.env
30
- Connection.open(connect_options)
30
+ App.connect_options = connect_options
31
+ Connection.open(App.connect_options)
31
32
  @definition = Definition.new(effective_config)
32
33
  load_initializer!
33
34
  App.instance = self
@@ -67,6 +68,8 @@ module Arql
67
68
  end
68
69
 
69
70
  def config
71
+ @config ||= YAML.load(IO.read(File.expand_path(@options.config_file)), aliases: true).with_indifferent_access
72
+ rescue ArgumentError
70
73
  @config ||= YAML.load(IO.read(File.expand_path(@options.config_file))).with_indifferent_access
71
74
  end
72
75
 
@@ -4,6 +4,9 @@ module Arql
4
4
  def open(options)
5
5
  ActiveRecord::Base.establish_connection(options)
6
6
  $C = ActiveRecord::Base.connection
7
+ $C.define_singleton_method(:dump) do |filename, no_create_db=false|
8
+ Arql::Mysqldump.new.dump_database(filename, no_create_db)
9
+ end
7
10
  end
8
11
  end
9
12
  end
@@ -35,6 +35,10 @@ module Arql
35
35
  [self].write_excel(filename, *fields, **options)
36
36
  end
37
37
 
38
+ def dump(filename, batch_size=500)
39
+ [self].dump(filename, batch_size)
40
+ end
41
+
38
42
  included do
39
43
  end
40
44
 
@@ -66,6 +70,10 @@ module Arql
66
70
  def to_create_sql
67
71
  ActiveRecord::Base.connection.exec_query("show create table #{table_name}").rows.last.last
68
72
  end
73
+
74
+ def dump(filename, no_create_table=false)
75
+ Arql::Mysqldump.new.dump_table(filename, table_name, no_create_table)
76
+ end
69
77
  end
70
78
  end
71
79
 
@@ -237,6 +245,9 @@ module Arql
237
245
  records.write_excel(filename, *fields, **options)
238
246
  end
239
247
 
248
+ def dump(filename, batch_size=500)
249
+ records.dump(filename, batch_size)
250
+ end
240
251
  end
241
252
  end
242
253
  end
@@ -127,4 +127,13 @@ class Array
127
127
  end
128
128
  end
129
129
  end
130
+
131
+ def dump(filename, batch_size=500)
132
+ File.open(File.expand_path(filename), 'w') do |file|
133
+ group_by(&:class).each do |(klass, records)|
134
+ file.puts(klass.to_upsert_sql(records, batch_size))
135
+ end
136
+ end
137
+ {size: size, file: File.expand_path(filename)}
138
+ end
130
139
  end
@@ -95,7 +95,7 @@ module Kernel
95
95
  def generate_excel(filename)
96
96
  Axlsx::Package.new do |package|
97
97
  yield(package.workbook)
98
- package.serialize(filename)
98
+ package.serialize(File.expand_path(filename))
99
99
  end
100
100
  end
101
101
 
@@ -2,4 +2,12 @@ class String
2
2
  def p
3
3
  puts self
4
4
  end
5
+
6
+ def expa
7
+ File.expand_path(self)
8
+ end
9
+
10
+ def f
11
+ expa
12
+ end
5
13
  end
@@ -0,0 +1,44 @@
1
+ module Arql
2
+ class Mysqldump
3
+
4
+ def initialize(options = nil)
5
+ options ||= App.connect_options
6
+ @options = options
7
+ if options[:socket]
8
+ port_or_sock = "-S #{options[:socket]}"
9
+ else
10
+ port_or_sock = "-P #{options[:port] || 3306}"
11
+ end
12
+ @base_dump_cmd = "mysqldump -u %{user} -h %{host} %{port_or_sock} %{password} --skip-lock-tables " % {
13
+ user: options[:username],
14
+ host: options[:host],
15
+ password: options[:password].presence.try { |e| "-p#{e}" } || '',
16
+ port_or_sock: port_or_sock
17
+ }
18
+ end
19
+
20
+ def dump_table(filename, table_name, no_create_table = false)
21
+ system dump_table_cmd(table_name, no_create_table) + " > #{filename}"
22
+ end
23
+
24
+ def dump_database(filename, no_create_db = false)
25
+ system dump_database_cmd(no_create_db) + " > #{filename}"
26
+ end
27
+
28
+ def dump_table_cmd(table_name, no_create_table = false)
29
+ @base_dump_cmd + " " + if no_create_table
30
+ "--no-create-info #{@options[:database]} #{table_name}"
31
+ else
32
+ "--add-drop-table #{@options[:database]} #{table_name}"
33
+ end
34
+ end
35
+
36
+ def dump_database_cmd(no_create_db = false)
37
+ @base_dump_cmd + " " + if no_create_db
38
+ "--no-create-db --add-drop-database --databases #{@options[:database]}"
39
+ else
40
+ "--add-drop-database --add-drop-table --databases #{@options[:database]}"
41
+ end
42
+ end
43
+ end
44
+ end
data/lib/arql/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Arql
2
- VERSION = "0.2.14"
2
+ VERSION = "0.3.3"
3
3
  end
data/lib/arql.rb CHANGED
@@ -10,6 +10,7 @@ require "arql/repl"
10
10
  require "arql/ssh_proxy"
11
11
  require "arql/app"
12
12
  require "arql/cli"
13
+ require "arql/mysqldump"
13
14
 
14
15
  module Arql
15
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.14
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liu Xiang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-03 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2
@@ -42,16 +42,22 @@ dependencies:
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 6.0.3
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: 6.2.0
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
- - - "~>"
55
+ - - ">="
53
56
  - !ruby/object:Gem::Version
54
57
  version: 6.0.3
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: 6.2.0
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: composite_primary_keys
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -126,16 +132,16 @@ dependencies:
126
132
  name: pry-doc
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
- - - "~>"
135
+ - - ">="
130
136
  - !ruby/object:Gem::Version
131
- version: 1.1.0
137
+ version: 1.0.0
132
138
  type: :runtime
133
139
  prerelease: false
134
140
  version_requirements: !ruby/object:Gem::Requirement
135
141
  requirements:
136
- - - "~>"
142
+ - - ">="
137
143
  - !ruby/object:Gem::Version
138
- version: 1.1.0
144
+ version: 1.0.0
139
145
  - !ruby/object:Gem::Dependency
140
146
  name: rainbow
141
147
  requirement: !ruby/object:Gem::Requirement
@@ -251,6 +257,7 @@ files:
251
257
  - lib/arql/ext/time.rb
252
258
  - lib/arql/id.rb
253
259
  - lib/arql/multi_io.rb
260
+ - lib/arql/mysqldump.rb
254
261
  - lib/arql/repl.rb
255
262
  - lib/arql/ssh_proxy.rb
256
263
  - lib/arql/ssh_proxy_patch.rb
@@ -267,14 +274,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
267
274
  requirements:
268
275
  - - ">="
269
276
  - !ruby/object:Gem::Version
270
- version: 2.3.0
277
+ version: 2.6.0
271
278
  required_rubygems_version: !ruby/object:Gem::Requirement
272
279
  requirements:
273
280
  - - ">="
274
281
  - !ruby/object:Gem::Version
275
282
  version: '0'
276
283
  requirements: []
277
- rubygems_version: 3.1.4
284
+ rubygems_version: 3.3.3
278
285
  signing_key:
279
286
  specification_version: 4
280
287
  summary: Rails ActiveRecord + Pry is the best SQL query editor