class DataMapper::Adapters::PostgresAdapter
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.
Public Instance Methods
disable_referential_integrity(repository = :default) { || ... }
click to toggle source
FIXME copied unchanged from activerecord
# File lib/database_cleaner/data_mapper/truncation.rb, line 125 def disable_referential_integrity(repository = :default) if supports_disable_referential_integrity? then execute(storage_names(repository).collect do |name| "ALTER TABLE #{quote_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_name(name)} ENABLE TRIGGER ALL" end.join(";")) end end
storage_names(repository = :default)
click to toggle source
taken from github.com/godfat/dm-mapping/tree/master
# File lib/database_cleaner/data_mapper/truncation.rb, line 96 def storage_names(repository = :default) sql = <<-SQL SELECT table_name FROM "information_schema"."tables" WHERE table_schema = current_schema() and table_type = 'BASE TABLE' SQL select(sql) end
supports_disable_referential_integrity?()
click to toggle source
FIXME copied from activerecord
# File lib/database_cleaner/data_mapper/truncation.rb, line 116 def supports_disable_referential_integrity? version = select("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)
click to toggle source
# File lib/database_cleaner/data_mapper/truncation.rb, line 104 def truncate_table(table_name) execute("TRUNCATE TABLE #{quote_name(table_name)} RESTART IDENTITY CASCADE;") end
truncate_tables(table_names)
click to toggle source
override to use a single statement
# File lib/database_cleaner/data_mapper/truncation.rb, line 109 def truncate_tables(table_names) quoted_names = table_names.collect { |n| quote_name(n) }.join(', ') execute("TRUNCATE TABLE #{quoted_names} RESTART IDENTITY;") end