rails-schema 0.1.6 → 0.1.8

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.
@@ -7,10 +7,11 @@ module Rails
7
7
  module Transformer
8
8
  class GraphBuilder
9
9
  def initialize(column_reader: Extractor::ColumnReader.new, association_reader: Extractor::AssociationReader.new,
10
- configuration: ::Rails::Schema.configuration)
10
+ configuration: ::Rails::Schema.configuration, view_tables: nil)
11
11
  @column_reader = column_reader
12
12
  @association_reader = association_reader
13
13
  @group_proc = configuration.resolved_group_proc
14
+ @view_tables = view_tables ? Set.new(view_tables) : Set.new
14
15
  end
15
16
 
16
17
  def build(models)
@@ -47,7 +48,8 @@ module Rails
47
48
  id: unique_id,
48
49
  table_name: model.table_name,
49
50
  columns: @column_reader.read(model),
50
- group: group
51
+ group: group,
52
+ view: @view_tables.include?(model.table_name)
51
53
  )
52
54
  end
53
55
 
@@ -4,18 +4,20 @@ module Rails
4
4
  module Schema
5
5
  module Transformer
6
6
  class Node
7
- attr_reader :id, :table_name, :columns, :group
7
+ attr_reader :id, :table_name, :columns, :group, :view
8
8
 
9
- def initialize(id:, table_name:, columns: [], group: [])
9
+ def initialize(id:, table_name:, columns: [], group: [], view: false)
10
10
  @id = id
11
11
  @table_name = table_name
12
12
  @columns = columns
13
13
  @group = group
14
+ @view = view
14
15
  end
15
16
 
16
17
  def to_h
17
18
  h = { id: @id, table_name: @table_name, columns: @columns }
18
19
  h[:group] = @group unless @group.empty?
20
+ h[:view] = true if @view
19
21
  h
20
22
  end
21
23
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rails
4
4
  module Schema
5
- VERSION = "0.1.6"
5
+ VERSION = "0.1.8"
6
6
  end
7
7
  end
data/lib/rails/schema.rb CHANGED
@@ -52,10 +52,10 @@ module Rails
52
52
  private
53
53
 
54
54
  def generate_active_record(output:)
55
- schema_data = parse_schema
55
+ schema_data, views = parse_schema
56
56
  models = Extractor::ModelScanner.new(schema_data: schema_data).scan
57
- column_reader = Extractor::ColumnReader.new(schema_data: schema_data)
58
- graph_data = Transformer::GraphBuilder.new(column_reader: column_reader).build(models)
57
+ column_reader = Extractor::ColumnReader.new(schema_data: schema_data, view_tables: views)
58
+ graph_data = Transformer::GraphBuilder.new(column_reader: column_reader, view_tables: views).build(models)
59
59
  graph_data[:metadata][:mode] = "active_record"
60
60
  generator = Renderer::HtmlGenerator.new(graph_data: graph_data)
61
61
  generator.render_to_file(output)
@@ -84,17 +84,24 @@ module Rails
84
84
  generator.render_to_file(output)
85
85
  end
86
86
 
87
+ # Returns [columns_by_table, view_table_names]. For :auto, falls through
88
+ # to structure.sql when schema.rb yields nothing.
87
89
  def parse_schema
88
90
  case configuration.schema_format
89
91
  when :ruby
90
- Extractor::SchemaFileParser.new.parse
92
+ parse_with(Extractor::SchemaFileParser.new)
91
93
  when :sql
92
- Extractor::StructureSqlParser.new.parse
94
+ parse_with(Extractor::StructureSqlParser.new)
93
95
  when :auto
94
- data = Extractor::SchemaFileParser.new.parse
95
- data.empty? ? Extractor::StructureSqlParser.new.parse : data
96
+ columns, views = parse_with(Extractor::SchemaFileParser.new)
97
+ columns.empty? ? parse_with(Extractor::StructureSqlParser.new) : [columns, views]
96
98
  end
97
99
  end
100
+
101
+ def parse_with(parser)
102
+ columns = parser.parse
103
+ [columns, parser.views]
104
+ end
98
105
  end
99
106
  end
100
107
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Kislichenko