module Sequel::ActiveRecord::Sqlite3::DatabaseMethods

Public Instance Methods

execute_ddl(sql, opts=OPTS) click to toggle source
# File lib/sequel/adapters/activerecord/sqlite3.rb, line 5
def execute_ddl(sql, opts=OPTS)
  execute(sql, opts)
end

Private Instance Methods

_execute(type, sql, opts, &block) click to toggle source
# File lib/sequel/adapters/activerecord/sqlite3.rb, line 11
def _execute(type, sql, opts, &block)
  original_results_as_hash = activerecord_raw_connection.results_as_hash
  activerecord_raw_connection.results_as_hash = false

  case type
  when :select
    activerecord_connection.send(:log, sql) do
      ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
        activerecord_raw_connection.query(sql, &block)
      end
    end
  when :insert
    activerecord_connection.execute(sql)
    activerecord_raw_connection.last_insert_row_id
  when :update
    activerecord_connection.send(:execute_batch, sql)
    activerecord_raw_connection.changes
  end
rescue ::ActiveRecord::RecordNotUnique => exception
  raise Sequel::UniqueConstraintViolation, exception.cause.message, exception.cause.backtrace
rescue ::ActiveRecord::StatementInvalid => exception
  if exception.cause.is_a?(SQLite3::Exception)
    raise_error(exception.cause)
  else
    raise
  end
ensure
  activerecord_raw_connection.results_as_hash = original_results_as_hash
end