table_inspector 0.4.2 → 0.5.1

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: 66bb18ecff6dea2031545bdff1230cde6380155cb32426d2da0d4fc468aa8f02
4
- data.tar.gz: 33b460f855700d11ceb65894004cd47730ebaba01df84f839d644483c41b26aa
3
+ metadata.gz: daa366bf65aa393dfec28755c95859132ac9ada94b7f64ec7e5aa51a8a624dfe
4
+ data.tar.gz: 7d55ca091b0428d4d5e7f8f49407df81f57800246cdc033d2cc3b86a48c3f434
5
5
  SHA512:
6
- metadata.gz: af82ef5518522d418045544193a5937d23e98ad6c59d402c548b8736c0111a6fcc24db88e0054b27d6d9d510a9ba04d08aa07294b1c0564f996ccf745e183dd5
7
- data.tar.gz: 30e2d9dc5f4a8d112cbce43840f89b51ccd2fa4aa1645ace7abdde07ef64890a3fde45ca213ebfa30f8e2a5bd9f2ea37faad81412e49dc2c4ff4fd04fdfe7113
6
+ metadata.gz: f30222ece677477bca2df6918e8a12b2198c5c673db1edcbe6160f3d33f921cd2926f4564eee4ff07d70b6091845d15b814896ae8b16f2f1bffc37e04ef4b305
7
+ data.tar.gz: fa30655cc9f20b570ffc5bb100b27245a86c101ed0c21c6bbc669149c20d09ef8d41caab1145c6819a3287a4edb52060f25b6f97895ab666411e21068e8e9442
data/README.md CHANGED
@@ -12,7 +12,7 @@ require "table_inspector"
12
12
  TableInspector.scan User
13
13
  ```
14
14
 
15
- ![TableInspect scan table](/img/table_inspector_scan_table_1.png)
15
+ ![TableInspect scan table](/img/table_inspector_scan_table_2.png)
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
- ![TableInspect ascan table](/img/table_inspector_ascan_table_1.png)
23
+ ![TableInspect ascan table](/img/table_inspector_ascan_table_2.png)
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
- ![Table Inspector scan column](/img/table_inspector_scan_column_1.png)
30
+ ![Table Inspector scan column](/img/table_inspector_scan_column_2.png)
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
- ![Table Inspector scan table column with sql type](/img/table_inspector_scan_table_with_sql_type_1.png)
39
+ ![Table Inspector scan table column with sql type](/img/table_inspector_scan_table_with_sql_type_2.png)
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.render(padding: [0, 4, 0, 0]) do |grid|
30
- grid << ["#{Text.bold('Table')}: #{klass.table_name}", "#{Text.bold('Column')}: #{column.name}"]
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(header: presenter.header).render_ascii(indent: 2) do |grid|
36
- grid << @presenter.extract_meta(column).values
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
@@ -1,32 +1,24 @@
1
1
 
2
2
  module TableInspector
3
3
  class Grid
4
- attr_reader :grid
4
+ attr_reader :terminal_table
5
5
 
6
- def initialize(**options)
7
- @grid = TTY::Table.new(**options)
8
- end
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 render_ascii(**with)
16
- yield grid
17
- puts grid.render(:ascii, **common_render_options.merge(with))
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 self.render_empty
21
- new.render(padding: [0, 2]) do |grid|
22
- grid << ["Empty."]
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, :column
4
+ attr_reader :klass, :column_name
5
5
 
6
- def initialize(klass, column = nil)
6
+ def initialize(klass, column_name = nil)
7
7
  @klass = klass
8
- @column = column
8
+ @column_name = column_name
9
9
  end
10
10
 
11
11
  def render
12
12
  render_title
13
13
 
14
- if column
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.render do |grid|
25
- grid << [Text.bold("Indexes")]
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
- if indexes_with_specific_column.blank?
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 << compose_index_data(index)
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
- if indexes.blank?
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 << compose_index_data(index)
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?(column) }
62
+ indexes.select{|index| index.columns.include?(column_name) }
68
63
  end
69
64
 
70
65
  def connection
@@ -9,6 +9,21 @@ module TableInspector
9
9
  @colorize = colorize
10
10
  end
11
11
 
12
+ def extract_meta(column)
13
+ if @colorize
14
+ extract_meta_with_highlight(column)
15
+ else
16
+ extract_meta_without_highlight(column)
17
+ end
18
+ end
19
+
20
+ def headings
21
+ first_column = klass.columns.first
22
+ extract_meta(first_column).keys.map(&:humanize)
23
+ end
24
+
25
+ private
26
+
12
27
  def extract_meta_with_highlight(column)
13
28
  column_data = column.as_json.merge(column.sql_type_metadata.as_json)
14
29
 
@@ -28,21 +43,6 @@ module TableInspector
28
43
  column.as_json.merge(column.sql_type_metadata.as_json).slice(*ordered_keys)
29
44
  end
30
45
 
31
- def extract_meta(column)
32
- if @colorize
33
- extract_meta_with_highlight(column)
34
- else
35
- extract_meta_without_highlight(column)
36
- end
37
- end
38
-
39
- def header
40
- first_column = klass.columns.first
41
- extract_meta(first_column).keys.map(&:humanize)
42
- end
43
-
44
- private
45
-
46
46
  def ordered_keys
47
47
  %w[name type limit null default precision scale comment].tap do |keys|
48
48
  keys << "sql_type" if sql_type
@@ -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.render do |grid|
29
- grid << ["#{Text.bold('Table')}: #{klass.table_name}"]
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(header: presenter.header).render_ascii(indent: 2) do |grid|
30
+ Grid.new(headings: presenter.headings) do |grid|
35
31
  klass.columns.each do |column|
36
- grid << presenter.extract_meta(column).values
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
@@ -1,3 +1,3 @@
1
1
  module TableInspector
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require "table_inspector/version"
2
2
  require "table_inspector/railtie"
3
- require "tty-table"
3
+ require "terminal-table"
4
4
  require "table_inspector/table"
5
5
  require "table_inspector/grid"
6
6
  require "table_inspector/indexes"
@@ -14,16 +14,16 @@ module TableInspector
14
14
  extend self
15
15
 
16
16
  def ascan(klass, column_name = nil, sql_type: false)
17
- klass = init_klass!(klass)
17
+ klass = classify!(klass)
18
18
 
19
19
  return unless klass
20
- return unless validate!(klass, column_name)
20
+ return unless validate!(klass, column_name)
21
21
 
22
22
  render(klass, column_name, sql_type, colorize: true)
23
23
  end
24
24
 
25
25
  def scan(klass, column_name = nil, sql_type: false)
26
- klass = init_klass!(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 init_klass!(klass)
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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_inspector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.1
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-06 00:00:00.000000000 Z
11
+ date: 2023-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -25,47 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 6.0.3.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: tty-table
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.12.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.12.0
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 3.12.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 3.12.0
55
- - !ruby/object:Gem::Dependency
56
- name: rspec-rails
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 6.0.1
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 6.0.1
40
+ version: 3.0.2
69
41
  description: Inspect table structure of ActiveRecord class
70
42
  email:
71
43
  - ianlynxk@gmail.com
@@ -88,11 +60,11 @@ files:
88
60
  - lib/table_inspector/text.rb
89
61
  - lib/table_inspector/version.rb
90
62
  - lib/tasks/table_inspector_tasks.rake
91
- homepage: https://github.com/table_inspector
63
+ homepage: https://github.com/otorain/table_inspector
92
64
  licenses:
93
65
  - MIT
94
66
  metadata:
95
- homepage_uri: https://github.com/table_inspector
67
+ homepage_uri: https://github.com/otorain/table_inspector
96
68
  source_code_uri: https://github.com/otorain/table_inspector
97
69
  changelog_uri: https://github.com/otorain/table_inspector/CHANGELOG
98
70
  post_install_message:
@@ -110,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
82
  - !ruby/object:Gem::Version
111
83
  version: '0'
112
84
  requirements: []
113
- rubygems_version: 3.3.13
85
+ rubygems_version: 3.4.7
114
86
  signing_key:
115
87
  specification_version: 4
116
88
  summary: Inspect table structure of ActiveRecord class