Sha256: 568fcec50ff3ec87e0e80149395367993a61a9cffe1c41ea7f3565ad74cc23da

Contents?: true

Size: 822 Bytes

Versions: 3

Compression:

Stored size: 822 Bytes

Contents

module Cmap; class GraphToSql

  attr_reader :table_name, :schema_name, :graph, :subquery_gsubs

  def initialize(table_name, schema_name, graph, subquery_gsubs = [])
    @table_name = table_name
    @schema_name = schema_name
    @graph = graph
    @subquery_gsubs = subquery_gsubs
  end

  def queries
    sorted_grouped_edges.inject([]) do |memo, (_, edges)|
      memo += (EdgesToQueries.new(edges, table_name, schema_name, subquery_expander).queries)
      memo
    end
  end

  private

  def subquery_expander
    SubqueryExpander.new(table_name: table_name, schema_name: schema_name, subquery_gsubs: subquery_gsubs)
  end

  def sorted_grouped_edges
    Hash[grouped_edges.sort]
  end

  def grouped_edges
    graph.edges.group_by {|e| graph.longest_path(table_name, e.destination_vertex).length}
  end

end; end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cmap-0.6.0 lib/cmap/graph_to_sql.rb
cmap-0.5.0 lib/cmap/graph_to_sql.rb
cmap-0.4.0 lib/cmap/graph_to_sql.rb