lib/pg_graph/data/render.rb in pg_graph-0.5.0 vs lib/pg_graph/data/render.rb in pg_graph-0.5.1

- old
+ new

@@ -83,11 +83,11 @@ def to_s(files = @files) case format when :sql; to_a.join("\n") when :exec; to_a.join("\n") - when :psql; to_psql(files).map { |group| group.join("\n") }.join("\n\n") + when :psql; to_psql(files).map { |group| group.join("\n") }.join("\n\n") end end def to_h @to_h ||= { @@ -132,11 +132,11 @@ "\\set QUIET", "\\set ON_ERROR_STOP" ] end - def render_begin() + def render_begin() [ "begin;" ] end def render_truncate() @tables.empty? ? [] : [ "truncate #{@tables.map(&:uid).join(", ")} restart identity cascade;" ] @@ -152,11 +152,11 @@ tables = @with_deletes ? @tables : @tables.reject(&:empty?) tables.map { |table| "alter table #{table.uid} #{arg} trigger all;" } end def render_deletes(kind) - table_uids = + table_uids = case kind when :none; [] when :touched; @tables.reject(&:empty?).map(&:uid) when :recursive tables = @tables.reject(&:empty?) @@ -175,11 +175,11 @@ end } end def render_truncates(kind) - table_uids = + table_uids = case kind when :none; [] when :touched; @tables.reject(&:empty?).map(&:uid) when :all; @tables.map(&:uid) else @@ -188,16 +188,28 @@ table_uids.map { |uid| "truncate #{uid} cascade;" } end def render_updates @update_records.map { |record| - "update #{record.table.uid} set " \ - + record.value_columns - .select { |column| !column.type.primary_key? } - .map { |column| "#{column.name} = #{render_value(column)}" } - .join(", ") + " " \ - + "where id = #{record.id};" + # Temporary fix for the case where a kind field is updated. Kind fields + # are not considered value_columns (!) so kind fields are skipped in + # the original code below. FIXME FIXME FIXME + "update #{record.table.uid} set " + + record.to_h.keys + .map { |key| record[key] } + .reject { |column| column.type.primary_key? } + .map { |column| + "#{column.name} = #{render_value(column)}" + }.join(", ") + " " \ + + "where id = #{record.id};" + +# "update #{record.table.uid} set " \ +# + record.value_columns +# .select { |column| !column.type.primary_key? } +# .map { |column| "#{column.name} = #{render_value(column)}" } +# .join(", ") + " " \ +# + "where id = #{record.id};" } end def render_inserts @insert_records.map { |table, records| @@ -260,10 +272,10 @@ else @materialized_views.map { |view| "refresh materialized view #{view.uid};" } end end - def render_commit() + def render_commit() [ "commit;" ] end end end