Sha256: 4149e8be13e128a643525eed8ef6d7491f5ec666cd1204aaf2494445b926b71a

Contents?: true

Size: 960 Bytes

Versions: 85

Compression:

Stored size: 960 Bytes

Contents

# frozen_string_literal: true

module Arel # :nodoc: all
  class InsertManager < Arel::TreeManager
    def initialize(table = nil)
      @ast = Nodes::InsertStatement.new(table)
    end

    def into(table)
      @ast.relation = table
      self
    end

    def columns; @ast.columns end
    def values=(val); @ast.values = val; end

    def select(select)
      @ast.select = select
    end

    def insert(fields)
      return if fields.empty?

      if String === fields
        @ast.values = Nodes::SqlLiteral.new(fields)
      else
        @ast.relation ||= fields.first.first.relation

        values = []

        fields.each do |column, value|
          @ast.columns << column
          values << value
        end
        @ast.values = create_values(values)
      end
      self
    end

    def create_values(values)
      Nodes::ValuesList.new([values])
    end

    def create_values_list(rows)
      Nodes::ValuesList.new(rows)
    end
  end
end

Version data entries

85 entries across 82 versions & 9 rubygems

Version Path
activerecord-8.0.2 lib/arel/insert_manager.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.7/lib/arel/insert_manager.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/activerecord-7.1.3.4/lib/arel/insert_manager.rb
activerecord-8.0.1 lib/arel/insert_manager.rb
activerecord-8.0.0.1 lib/arel/insert_manager.rb
activerecord-7.2.2.1 lib/arel/insert_manager.rb
activerecord-7.1.5.1 lib/arel/insert_manager.rb
activerecord-7.0.8.7 lib/arel/insert_manager.rb
activerecord-8.0.0 lib/arel/insert_manager.rb
activerecord-7.2.2 lib/arel/insert_manager.rb
activerecord-7.1.5 lib/arel/insert_manager.rb
activerecord-8.0.0.rc2 lib/arel/insert_manager.rb
activerecord-7.2.1.2 lib/arel/insert_manager.rb
activerecord-7.1.4.2 lib/arel/insert_manager.rb
activerecord-7.0.8.6 lib/arel/insert_manager.rb
activerecord-8.0.0.rc1 lib/arel/insert_manager.rb
activerecord-7.2.1.1 lib/arel/insert_manager.rb
activerecord-7.1.4.1 lib/arel/insert_manager.rb
activerecord-7.0.8.5 lib/arel/insert_manager.rb
activerecord-8.0.0.beta1 lib/arel/insert_manager.rb