Class: RailsDb::Adapters::BaseAdapter

Inherits:
Object
  • Object
show all
Extended by:
Connection
Defined in:
lib/rails_db/adapters/base_adapter.rb

Direct Known Subclasses

Mysql, Postgres, Sqlite

Constant Summary collapse

MULTI_STATEMENT_HELP_TEXT =
"EXPERIMENTAL: You can import only file with SQL statements separated by ';'. Each new statement must start from new line."

Class Method Summary collapse

Methods included from Connection

column_names, column_properties, columns, connection, to_param

Class Method Details

.adapter_nameObject



48
49
50
# File 'lib/rails_db/adapters/base_adapter.rb', line 48

def self.adapter_name
  'base'
end

.count(table_name) ⇒ Object



69
70
71
# File 'lib/rails_db/adapters/base_adapter.rb', line 69

def self.count(table_name)
  select("SELECT COUNT(*) FROM #{table_name}")[0].rows.flatten.last.to_i
end

.delete(table_name, pk_name, pk_id) ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/rails_db/adapters/base_adapter.rb', line 60

def self.delete(table_name, pk_name, pk_id)
  case pk_id
    when Fixnum, Bignum then
      execute("DELETE FROM #{table_name} WHERE #{pk_name} = #{pk_id};")
    else
      execute("DELETE FROM #{table_name} WHERE #{pk_name} = '#{pk_id}';")
  end
end

.exec_query(sql) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rails_db/adapters/base_adapter.rb', line 28

def self.exec_query(sql)
  t0 = Time.now
  results = nil

  execute_with_sandbox_if_needed do
    results = connection.exec_query(sql)
  end

  execution_time = Time.now - t0
  [results, execution_time]
end

.execute(sql) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/rails_db/adapters/base_adapter.rb', line 20

def self.execute(sql)
  t0 = Time.now
  execute_with_sandbox_if_needed do
    connection.execute(sql)
  end
  Time.now - t0
end

.execute_with_sandbox_if_neededObject



9
10
11
12
13
14
15
16
17
18
# File 'lib/rails_db/adapters/base_adapter.rb', line 9

def self.execute_with_sandbox_if_needed
  if RailsDb.sandbox
    ActiveRecord::Base.transaction do
      yield
      raise ActiveRecord::Rollback
    end
  else
    yield
  end
end

.explain(sql) ⇒ Object



44
45
46
# File 'lib/rails_db/adapters/base_adapter.rb', line 44

def self.explain(sql)
  BaseAdapter.exec_query(sql)
end

.indexes(table_name) ⇒ Object



77
78
79
# File 'lib/rails_db/adapters/base_adapter.rb', line 77

def self.indexes(table_name)
  connection.indexes(table_name)
end

.mimeObject



52
53
54
# File 'lib/rails_db/adapters/base_adapter.rb', line 52

def self.mime
  'text/x-sql'
end

.primary_key(table_name) ⇒ Object



73
74
75
# File 'lib/rails_db/adapters/base_adapter.rb', line 73

def self.primary_key(table_name)
  connection.primary_key(table_name)
end

.select(sql) ⇒ Object



40
41
42
# File 'lib/rails_db/adapters/base_adapter.rb', line 40

def self.select(sql)
  BaseAdapter.exec_query(sql)
end

.truncate(table_name) ⇒ Object



56
57
58
# File 'lib/rails_db/adapters/base_adapter.rb', line 56

def self.truncate(table_name)
  execute("TRUNCATE TABLE #{table_name};")
end