Class: Rails::Schema::Transformer::GraphBuilder
- Inherits:
-
Object
- Object
- Rails::Schema::Transformer::GraphBuilder
- Defined in:
- lib/rails/schema/transformer/graph_builder.rb
Instance Method Summary collapse
- #build(models) ⇒ Object
-
#initialize(column_reader: Extractor::ColumnReader.new, association_reader: Extractor::AssociationReader.new, configuration: ::Rails::Schema.configuration, view_tables: nil) ⇒ GraphBuilder
constructor
A new instance of GraphBuilder.
Constructor Details
#initialize(column_reader: Extractor::ColumnReader.new, association_reader: Extractor::AssociationReader.new, configuration: ::Rails::Schema.configuration, view_tables: nil) ⇒ GraphBuilder
Returns a new instance of GraphBuilder.
9 10 11 12 13 14 15 |
# File 'lib/rails/schema/transformer/graph_builder.rb', line 9 def initialize(column_reader: Extractor::ColumnReader.new, association_reader: Extractor::AssociationReader.new, configuration: ::Rails::Schema.configuration, view_tables: nil) @column_reader = column_reader @association_reader = association_reader @group_proc = configuration.resolved_group_proc @view_tables = view_tables ? Set.new(view_tables) : Set.new end |
Instance Method Details
#build(models) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rails/schema/transformer/graph_builder.rb', line 17 def build(models) model_ids = assign_unique_ids(models) name_to_id = build_name_to_id(model_ids) nodes = model_ids.map { |m, uid| build_node(m, uid) } edges = deduplicate_edges(model_ids.flat_map { |m, uid| build_edges(m, uid, name_to_id) }) { nodes: nodes.map(&:to_h), edges: edges.map(&:to_h), metadata: (models) } end |