class Atomically::OnDuplicateSqlService

Public Class Methods

new(klass, columns) click to toggle source
# File lib/atomically/on_duplicate_sql_service.rb, line 4
def initialize(klass, columns)
  @klass = klass
  @columns = columns
end

Public Instance Methods

mysql_quote_columns_for_plus() click to toggle source
# File lib/atomically/on_duplicate_sql_service.rb, line 9
def mysql_quote_columns_for_plus
  return @columns.map do |column|
    quoted_column = quote_column(column)
    next "#{quoted_column} = #{quoted_column} + VALUES(#{quoted_column})"
  end
end
pg_quote_columns_for_plus() click to toggle source
# File lib/atomically/on_duplicate_sql_service.rb, line 16
def pg_quote_columns_for_plus
  return @columns.map do |column|
    quoted_column = quote_column(column)
    next "#{quoted_column} = #{@klass.quoted_table_name}.#{quoted_column} + excluded.#{quoted_column}"
  end
end

Private Instance Methods

quote_column(column) click to toggle source
# File lib/atomically/on_duplicate_sql_service.rb, line 25
def quote_column(column)
  @klass.connection.quote_column_name(column)
end