Class: DataMapper::Adapters::PostgresAdapter

Inherits:
DataObjectsAdapter show all
Defined in:
lib/database_cleaner/data_mapper/truncation.rb

Overview

FIXME i don’t know if this works i basically just copied activerecord code to get a rough idea what they do. i don’t have postgres available, so i won’t be the one to write this. maybe codes below gets some postgres/datamapper user going, though.

Instance Method Summary collapse

Instance Method Details

#disable_referential_integrity(repository = :default) ⇒ Object

FIXME copied unchanged from activerecord



97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/database_cleaner/data_mapper/truncation.rb', line 97

def disable_referential_integrity(repository = :default)
  if supports_disable_referential_integrity? then
    execute(storage_names(repository).collect do |name|
      "ALTER TABLE #{quote_table_name(name)} DISABLE TRIGGER ALL"
    end.join(";"))
  end
  yield
ensure
  if supports_disable_referential_integrity? then
    execute(storage_names(repository).collect do |name|
      "ALTER TABLE #{quote_table_name(name)} ENABLE TRIGGER ALL"
    end.join(";"))
  end
end

#storage_names(repository = :default) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/database_cleaner/data_mapper/truncation.rb', line 74

def storage_names(repository = :default)
  sql = <<-SQL.compress_lines
    SELECT table_name FROM "information_schema"."tables"
    WHERE table_schema = current_schema()
  SQL
  query(sql)
end

#supports_disable_referential_integrity?Boolean

FIXME copied from activerecord

Returns:

  • (Boolean)


88
89
90
91
92
93
# File 'lib/database_cleaner/data_mapper/truncation.rb', line 88

def supports_disable_referential_integrity?
  version = query("SHOW server_version")[0][0].split('.')
  (version[0].to_i >= 8 && version[1].to_i >= 1) ? true : false
rescue
  return false
end

#truncate_table(table_name) ⇒ Object



82
83
84
# File 'lib/database_cleaner/data_mapper/truncation.rb', line 82

def truncate_table(table_name)
  execute("TRUNCATE TABLE #{quote_table_name(table_name)};")
end