arql 0.2.13 → 0.3.2

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: a172e23e1a195c0359c73041431fed88cdb54f288e6e836a7f13febaa57632d7
4
- data.tar.gz: 30f9ebc606efae03e4be2e1774d85b893d81462e75fc712ffb3d543e43c7bbcd
3
+ metadata.gz: 21ead482a62e2bad4589f8756b4c5db0e5d4152d54e08b2707bf3ce1441e24cd
4
+ data.tar.gz: d51796aed86a97001c59e927073a8fefdc82c14c5b45a8417db4aed167ab4125
5
5
  SHA512:
6
- metadata.gz: ec25c920bdd7a96dcd510abd6db5b1217fdc7e7d9f94558a857f37d17338defe804c25949c90f508d88399907b0785dce3014e2c1e073dd3d3da7a758307bffd
7
- data.tar.gz: 7daaea1f984be21a0a524ce1647b275c748c69a341a5ade443514246999bd013b071c3f6b4bffc9aceb6371fea3803b199e09d51a98e365c3b001f34c3e17420
6
+ metadata.gz: 8be01074982b47fb01a0992f35e2504379ef51edbc9ad9f29d14f31aeedb0d297542ca7f9f98671a3b5a4a38567858c83a60f2025eed63832dc1951b994e4a3a
7
+ data.tar.gz: f66fea7d15fbd6a99e7c84ebe90540d6c86467ed108c94707b07fe081251d1d4e647c43d8577e560eaf7bdfe56c286069a5ca95d5de27ce76a7bf97aa0ea4043
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arql (0.2.13)
5
- activerecord (~> 6.0.3)
4
+ arql (0.3.2)
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.2.0)
14
14
  rainbow (~> 3.0.0)
15
15
  roo (~> 2.8.3)
16
16
  sqlite3 (~> 1.4)
@@ -20,65 +20,71 @@ 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
+ mini_portile2 (2.6.1)
52
+ minitest (5.15.0)
51
53
  mysql2 (0.5.3)
52
54
  net-ssh (6.1.0)
53
55
  net-ssh-gateway (2.0.0)
54
56
  net-ssh (>= 4.0.0)
55
- nokogiri (1.10.10)
56
- mini_portile2 (~> 2.4.0)
57
+ nokogiri (1.12.5)
58
+ mini_portile2 (~> 2.6.1)
59
+ racc (~> 1.4)
57
60
  pry (0.13.1)
58
61
  coderay (~> 1.1)
59
62
  method_source (~> 1.0)
60
63
  pry-byebug (3.9.0)
61
64
  byebug (~> 11.0)
62
65
  pry (~> 0.13.0)
63
- pry-doc (1.1.0)
66
+ pry-doc (1.2.0)
64
67
  pry (~> 0.11)
65
68
  yard (~> 0.9.11)
69
+ racc (1.6.0)
66
70
  rainbow (3.0.0)
67
71
  rake (12.3.3)
68
72
  roo (2.8.3)
69
73
  nokogiri (~> 1)
70
74
  rubyzip (>= 1.3.0, < 3.0.0)
71
- rubyzip (2.3.0)
75
+ rubyzip (2.3.2)
72
76
  sqlite3 (1.4.2)
73
77
  table_print (1.5.7)
74
78
  terminal-table (1.8.0)
75
79
  unicode-display_width (~> 1.1, >= 1.1.1)
76
80
  thread_safe (0.3.6)
77
- tzinfo (1.2.8)
81
+ tzinfo (1.2.9)
78
82
  thread_safe (~> 0.1)
79
- unicode-display_width (1.7.0)
80
- yard (0.9.25)
81
- zeitwerk (2.4.2)
83
+ unicode-display_width (1.8.0)
84
+ webrick (1.7.0)
85
+ yard (0.9.27)
86
+ webrick (~> 1.7.0)
87
+ zeitwerk (2.5.1)
82
88
 
83
89
  PLATFORMS
84
90
  ruby
@@ -88,4 +94,4 @@ DEPENDENCIES
88
94
  rake (~> 12.0)
89
95
 
90
96
  BUNDLED WITH
91
- 2.1.4
97
+ 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.2.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
 
data/lib/arql/concerns.rb CHANGED
@@ -1,2 +1,2 @@
1
1
  require 'arql/concerns/global_data_definition'
2
- require 'arql/concerns/tables_data_definition'
2
+ require 'arql/concerns/table_data_definition'
@@ -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.13"
2
+ VERSION = "0.3.2"
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.13
4
+ version: 0.3.2
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: 2021-12-27 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
@@ -128,14 +134,14 @@ dependencies:
128
134
  requirements:
129
135
  - - "~>"
130
136
  - !ruby/object:Gem::Version
131
- version: 1.1.0
137
+ version: 1.2.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.2.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