Module: ActiveRecord::Import::AbstractAdapter::InstanceMethods

Included in:
ConnectionAdapters::AbstractAdapter
Defined in:
lib/activerecord-import/adapters/abstract_adapter.rb

Instance Method Summary collapse

Instance Method Details

#after_import_synchronize(instances) ⇒ Object

Synchronizes the passed in ActiveRecord instances with the records in the database by calling reload on each instance.



42
43
44
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 42

def after_import_synchronize( instances )
  instances.each(&:reload)
end

#increment_locking_column!(table_name, results, locking_column) ⇒ Object



65
66
67
68
69
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 65

def increment_locking_column!(table_name, results, locking_column)
  if locking_column.present?
    results << "\"#{locking_column}\"=#{table_name}.\"#{locking_column}\"+1"
  end
end

#insert_many(sql, values, _options = {}, *args) ⇒ Object

:nodoc:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 9

def insert_many( sql, values, _options = {}, *args ) # :nodoc:
  number_of_inserts = 1

  base_sql, post_sql = case sql
                       when String
                         [sql, '']
                       when Array
                         [sql.shift, sql.join( ' ' )]
  end

  sql2insert = base_sql + values.join( ',' ) + post_sql
  insert( sql2insert, *args )

  ActiveRecord::Import::Result.new([], number_of_inserts, [], [])
end

#next_value_for_sequence(sequence_name) ⇒ Object



5
6
7
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 5

def next_value_for_sequence(sequence_name)
  %(#{sequence_name}.nextval)
end

#post_sql_statements(table_name, options) ⇒ Object

Returns an array of post SQL statements given the passed in options.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 47

def post_sql_statements( table_name, options ) # :nodoc:
  post_sql_statements = []

  if supports_on_duplicate_key_update? && options[:on_duplicate_key_update]
    post_sql_statements << sql_for_on_duplicate_key_update( table_name, options[:on_duplicate_key_update], options[:model], options[:primary_key], options[:locking_column] )
  elsif logger && options[:on_duplicate_key_update]
    logger.warn "Ignoring on_duplicate_key_update because it is not supported by the database."
  end

  # custom user post_sql
  post_sql_statements << options[:post_sql] if options[:post_sql]

  # with rollup
  post_sql_statements << rollup_sql if options[:rollup]

  post_sql_statements
end

#pre_sql_statements(options) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 25

def pre_sql_statements(options)
  sql = []
  sql << options[:pre_sql] if options[:pre_sql]
  sql << options[:command] if options[:command]

  # add keywords like IGNORE or DELAYED
  if options[:keywords].is_a?(Array)
    sql.concat(options[:keywords])
  elsif options[:keywords]
    sql << options[:keywords].to_s
  end

  sql
end

#supports_on_duplicate_key_update?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 71

def supports_on_duplicate_key_update?
  false
end