arql 0.2.13 → 0.3.2

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: 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