table_inspector 0.4.3 → 0.5.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 +4 -4
- data/README.md +4 -4
- data/lib/table_inspector/column.rb +6 -10
- data/lib/table_inspector/grid.rb +13 -21
- data/lib/table_inspector/indexes.rb +18 -23
- data/lib/table_inspector/presenter.rb +1 -1
- data/lib/table_inspector/table.rb +11 -11
- data/lib/table_inspector/version.rb +1 -1
- data/lib/table_inspector.rb +4 -4
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72d3fbfaa4be1cd944b8c83222d98500f5beab08c0634701dd40ca4b61a2b784
|
4
|
+
data.tar.gz: ab0dc6194a714a95861f8092ce7315dd9ac219b48932f3b88eda4f3251158ccc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60d5bd63edd66fc4cad1d7e249d5f34f5a62f11d8af223da0955f7540b9fd2948d0eb20c4b65a432c7da1f18c570f79f61a585b54cbf8fc205e7d1d859ec800f
|
7
|
+
data.tar.gz: b36f52c8dda96dc327b414aeebe5103cce82c13c26884424f062ec3546941610e2b428777dfb731153ce3018df5127196f661673c1a84f50875e3f63a1a7af2b
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ require "table_inspector"
|
|
12
12
|
TableInspector.scan User
|
13
13
|
```
|
14
14
|
|
15
|
-

|
16
16
|
|
17
17
|
It will print the all table definition and all indexes.
|
18
18
|
|
@@ -20,14 +20,14 @@ Or you can use `TableInspector.ascan` to print more colorful table(`ascan` means
|
|
20
20
|
```ruby
|
21
21
|
TableInspector.ascan User
|
22
22
|
```
|
23
|
-

|
24
24
|
|
25
25
|
And to print a specific column by:
|
26
26
|
|
27
27
|
```ruby
|
28
28
|
TableInspector.scan User, :name
|
29
29
|
```
|
30
|
-

|
31
31
|
|
32
32
|
It will print the column definition and which indexes that contains this column.
|
33
33
|
|
@@ -36,7 +36,7 @@ Also, you can print `sql_type` which type of column in database by provide `sql_
|
|
36
36
|
```ruby
|
37
37
|
TableInspector.scan User, sql_type: true
|
38
38
|
```
|
39
|
-

|
40
40
|
|
41
41
|
## Installation
|
42
42
|
Add this line to your application's Gemfile:
|
@@ -12,29 +12,25 @@ module TableInspector
|
|
12
12
|
|
13
13
|
def render
|
14
14
|
Text.break_line
|
15
|
-
|
16
15
|
render_title
|
17
16
|
render_body
|
18
|
-
|
19
17
|
Text.break_line
|
20
|
-
|
21
18
|
Indexes.new(klass, column.name).render
|
22
|
-
|
23
19
|
Text.break_line
|
24
20
|
end
|
25
21
|
|
26
22
|
private
|
27
23
|
|
28
24
|
def render_title
|
29
|
-
Grid.new
|
30
|
-
grid
|
31
|
-
end
|
25
|
+
Grid.new do |grid|
|
26
|
+
grid.add_row(["#{Text.bold('Table')}: #{klass.table_name}", "#{Text.bold('Column')}: #{column.name}"])
|
27
|
+
end.render
|
32
28
|
end
|
33
29
|
|
34
30
|
def render_body
|
35
|
-
Grid.new(
|
36
|
-
grid
|
37
|
-
end
|
31
|
+
Grid.new(headings: presenter.headings) do |grid|
|
32
|
+
grid.add_row(@presenter.extract_meta(column).values)
|
33
|
+
end.render
|
38
34
|
end
|
39
35
|
end
|
40
36
|
end
|
data/lib/table_inspector/grid.rb
CHANGED
@@ -1,32 +1,24 @@
|
|
1
1
|
|
2
2
|
module TableInspector
|
3
3
|
class Grid
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :terminal_table
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def render(**with)
|
11
|
-
yield grid
|
12
|
-
puts grid.render(**common_render_options.merge(with))
|
13
|
-
end
|
6
|
+
delegate :add_row,
|
7
|
+
:to_s,
|
8
|
+
:rows, to: :terminal_table
|
14
9
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
10
|
+
def initialize(**options, &block)
|
11
|
+
@terminal_table = ::Terminal::Table.new(**options)
|
12
|
+
yield self if block_given?
|
18
13
|
end
|
19
14
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
15
|
+
def render
|
16
|
+
if rows.empty?
|
17
|
+
Text.break_line
|
18
|
+
puts " Empty."
|
19
|
+
else
|
20
|
+
puts self
|
23
21
|
end
|
24
22
|
end
|
25
|
-
|
26
|
-
def common_render_options
|
27
|
-
{
|
28
|
-
multiline: true
|
29
|
-
}
|
30
|
-
end
|
31
23
|
end
|
32
24
|
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
|
2
2
|
module TableInspector
|
3
3
|
class Indexes
|
4
|
-
attr_reader :klass, :
|
4
|
+
attr_reader :klass, :column_name
|
5
5
|
|
6
|
-
def initialize(klass,
|
6
|
+
def initialize(klass, column_name = nil)
|
7
7
|
@klass = klass
|
8
|
-
@
|
8
|
+
@column_name = column_name
|
9
9
|
end
|
10
10
|
|
11
11
|
def render
|
12
12
|
render_title
|
13
13
|
|
14
|
-
if
|
14
|
+
if column_name
|
15
15
|
render_indexes_with_specific_column
|
16
16
|
else
|
17
17
|
render_indexes
|
@@ -21,34 +21,25 @@ module TableInspector
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def render_title
|
24
|
-
Grid.new
|
25
|
-
grid
|
26
|
-
end
|
24
|
+
Grid.new do |grid|
|
25
|
+
grid.add_row([Text.bold("Indexes")])
|
26
|
+
end.render
|
27
27
|
end
|
28
28
|
|
29
29
|
def render_indexes_with_specific_column
|
30
|
-
|
31
|
-
Grid.render_empty
|
32
|
-
end
|
33
|
-
|
34
|
-
Grid.new.render(padding: [0, 2]) do |grid|
|
30
|
+
Grid.new(headings: headings) do |grid|
|
35
31
|
indexes_with_specific_column.each do |index|
|
36
|
-
grid
|
32
|
+
grid.add_row(compose_index_data(index))
|
37
33
|
end
|
38
|
-
end
|
34
|
+
end.render
|
39
35
|
end
|
40
36
|
|
41
37
|
def render_indexes
|
42
|
-
|
43
|
-
Grid.render_empty
|
44
|
-
return
|
45
|
-
end
|
46
|
-
|
47
|
-
Grid.new.render(padding: [0, 2]) do |grid|
|
38
|
+
Grid.new(headings: headings) do |grid|
|
48
39
|
indexes.each do |index|
|
49
|
-
grid
|
40
|
+
grid.add_row(compose_index_data(index))
|
50
41
|
end
|
51
|
-
end
|
42
|
+
end.render
|
52
43
|
end
|
53
44
|
|
54
45
|
def compose_index_data(index)
|
@@ -59,12 +50,16 @@ module TableInspector
|
|
59
50
|
]
|
60
51
|
end
|
61
52
|
|
53
|
+
def headings
|
54
|
+
%w(Name Columns Unique?)
|
55
|
+
end
|
56
|
+
|
62
57
|
def indexes
|
63
58
|
@indexes ||= connection.indexes(klass.table_name)
|
64
59
|
end
|
65
60
|
|
66
61
|
def indexes_with_specific_column
|
67
|
-
indexes.select{|index| index.columns.include?(
|
62
|
+
indexes.select{|index| index.columns.include?(column_name) }
|
68
63
|
end
|
69
64
|
|
70
65
|
def connection
|
@@ -11,31 +11,31 @@ module TableInspector
|
|
11
11
|
|
12
12
|
def render
|
13
13
|
Text.break_line
|
14
|
-
|
15
14
|
render_title
|
16
15
|
render_body
|
17
|
-
|
18
16
|
Text.break_line
|
19
|
-
|
20
|
-
Indexes.new(klass).render
|
21
|
-
|
17
|
+
render_indexes
|
22
18
|
Text.break_line
|
23
19
|
end
|
24
20
|
|
25
21
|
private
|
26
22
|
|
27
23
|
def render_title
|
28
|
-
Grid.new
|
29
|
-
grid
|
30
|
-
end
|
24
|
+
Grid.new do |grid|
|
25
|
+
grid.add_row(["#{Text.bold('Table')}: #{klass.table_name}"])
|
26
|
+
end.render
|
31
27
|
end
|
32
28
|
|
33
29
|
def render_body
|
34
|
-
Grid.new(
|
30
|
+
Grid.new(headings: presenter.headings) do |grid|
|
35
31
|
klass.columns.each do |column|
|
36
|
-
grid
|
32
|
+
grid.add_row(presenter.extract_meta(column).values)
|
37
33
|
end
|
38
|
-
end
|
34
|
+
end.render
|
35
|
+
end
|
36
|
+
|
37
|
+
def render_indexes
|
38
|
+
Indexes.new(klass).render
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
data/lib/table_inspector.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "table_inspector/version"
|
2
2
|
require "table_inspector/railtie"
|
3
|
-
require "
|
3
|
+
require "terminal-table"
|
4
4
|
require "table_inspector/table"
|
5
5
|
require "table_inspector/grid"
|
6
6
|
require "table_inspector/indexes"
|
@@ -14,7 +14,7 @@ module TableInspector
|
|
14
14
|
extend self
|
15
15
|
|
16
16
|
def ascan(klass, column_name = nil, sql_type: false)
|
17
|
-
klass =
|
17
|
+
klass = classify!(klass)
|
18
18
|
|
19
19
|
return unless klass
|
20
20
|
return unless validate!(klass, column_name)
|
@@ -23,7 +23,7 @@ module TableInspector
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def scan(klass, column_name = nil, sql_type: false)
|
26
|
-
klass =
|
26
|
+
klass = classify!(klass)
|
27
27
|
|
28
28
|
return unless klass
|
29
29
|
return unless validate!(klass, column_name)
|
@@ -33,7 +33,7 @@ module TableInspector
|
|
33
33
|
|
34
34
|
private
|
35
35
|
|
36
|
-
def
|
36
|
+
def classify!(klass)
|
37
37
|
begin
|
38
38
|
unless klass.is_a?(Class)
|
39
39
|
klass = klass.to_s.classify.constantize
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: table_inspector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 6.0.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: terminal-table
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 3.0.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 3.0.2
|
41
41
|
description: Inspect table structure of ActiveRecord class
|
42
42
|
email:
|
43
43
|
- ianlynxk@gmail.com
|
@@ -82,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
requirements: []
|
85
|
-
rubygems_version: 3.
|
85
|
+
rubygems_version: 3.4.7
|
86
86
|
signing_key:
|
87
87
|
specification_version: 4
|
88
88
|
summary: Inspect table structure of ActiveRecord class
|