Sha256: 35458939ee06a0f2293f3ef487254c0cb6e4cb024c99a628cc306a0dd05cbc95
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 KB
Contents
# rubocop:disable Naming/MethodName # rubocop:disable Naming/UncommunicativeMethodParamName module Arel module Nodes # https://www.postgresql.org/docs/10/sql-update.html Arel::Nodes::UpdateStatement.class_eval do attr_accessor :with attr_accessor :froms attr_accessor :returning alias_method :old_initialize, :initialize def initialize old_initialize @froms = [] @returning = [] end end end module Visitors class ToSql # rubocop:disable Metrics/CyclomaticComplexity # rubocop:disable Metrics/AbcSize # rubocop:disable Metrics/PerceivedComplexity def visit_Arel_Nodes_UpdateStatement(o, collector) if o.with collector = visit o.with, collector collector << SPACE end wheres = if o.orders.empty? && o.limit.nil? o.wheres else [Nodes::In.new(o.key, [build_subselect(o.key, o)])] end collector << 'UPDATE ' collector = visit o.relation, collector unless o.values.empty? collector << ' SET ' collector = inject_join o.values, collector, ', ' end unless o.froms.empty? collector << ' FROM ' collector = inject_join o.froms, collector, ', ' end unless wheres.empty? collector << ' WHERE ' collector = inject_join wheres, collector, ' AND ' end unless o.returning.empty? collector << ' RETURNING ' collector = inject_join o.returning, collector, ', ' end collector end # rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/CyclomaticComplexity # rubocop:enable Metrics/PerceivedComplexity end end end # rubocop:enable Naming/MethodName # rubocop:enable Naming/UncommunicativeMethodParamName
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
arel_toolkit-0.3.0 | lib/arel/extensions/update_statement.rb |