table_inspector 0.4.3 → 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: 7b794452c662ccbfe7471e24a57a86d31ff1919911bd83f2d786e85aca437ef6
4
- data.tar.gz: 50c4cbcc08b1b93514377474be25e30c0af3c2823bbbf1e36956ccdf48ec78be
3
+ metadata.gz: daa366bf65aa393dfec28755c95859132ac9ada94b7f64ec7e5aa51a8a624dfe
4
+ data.tar.gz: 7d55ca091b0428d4d5e7f8f49407df81f57800246cdc033d2cc3b86a48c3f434
5
5
  SHA512:
6
- metadata.gz: 877e2772ea00688c4e1d08d9cf315d8086768ec8e0670abec682fb4aeb8bc51c78faf4351b5bc265d90e44cffa2c8697fc628e3173aab5bf182ee7068859b2c3
7
- data.tar.gz: 42a0273f52692a64c1a82af5942038802c377e91b0bcd9f694f4ffb8372746f394943624dd42abd2f780fe007aaf9c769ab05e44b2afbe420bbd23636a1317f8
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
@@ -17,7 +17,7 @@ module TableInspector
17
17
  end
18
18
  end
19
19
 
20
- def header
20
+ def headings
21
21
  first_column = klass.columns.first
22
22
  extract_meta(first_column).keys.map(&:humanize)
23
23
  end
@@ -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.3"
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,7 +14,7 @@ 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
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 = 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.3
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-07 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,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: 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
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.3.13
85
+ rubygems_version: 3.4.7
86
86
  signing_key:
87
87
  specification_version: 4
88
88
  summary: Inspect table structure of ActiveRecord class