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) ⇒ GraphBuilder
constructor
A new instance of GraphBuilder.
Constructor Details
#initialize(column_reader: Extractor::ColumnReader.new, association_reader: Extractor::AssociationReader.new, configuration: ::Rails::Schema.configuration) ⇒ GraphBuilder
Returns a new instance of GraphBuilder.
9 10 11 12 13 14 |
# 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) @column_reader = column_reader @association_reader = association_reader @group_proc = configuration.resolved_group_proc end |
Instance Method Details
#build(models) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rails/schema/transformer/graph_builder.rb', line 16 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 |