Sha256: c89fc36ece5da6f3be4b4a26912d6151036ea8e62045eac9cd64c46ae4b8032b
Contents?: true
Size: 1.03 KB
Versions: 1
Compression:
Stored size: 1.03 KB
Contents
module Cmap; class EdgesToQueries attr_reader :edges, :table_name, :schema_name, :subquery_expander def initialize(edges, table_name, schema_name, subquery_expander) @edges = edges @table_name = table_name @schema_name = schema_name @subquery_expander = subquery_expander end def queries add_columns_queries + gsub_subqueries + updates .delete_if {|q| q.empty?} end private def unique_edges edges.uniq {|e| [e.destination_vertex, e.value]} end def add_columns_queries unique_edges.map {|e| "alter table #{schema_name}.#{table_name} add column #{e.destination_vertex} int2;"} end def grouped_edges unique_edges.group_by {|e| subquery_expander.update_query?(e)} end def gsub_subqueries (grouped_edges[true] || []).map {|e| subquery_expander.query(e)} end def updates u = (grouped_edges[false] || []).map {|e| "#{e.destination_vertex}=(#{e.value})::int"}.join(", ") return [] if u.empty? ["update #{schema_name}.#{table_name} set #{u};"] end end; end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cmap-0.4.0 | lib/cmap/edges_to_queries.rb |