Class: DataMapper::Adapters::PostgresAdapter
- Inherits:
-
DataObjectsAdapter
- Object
- DataObjectsAdapter
- DataMapper::Adapters::PostgresAdapter
- 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
-
#disable_referential_integrity(repository = :default) ⇒ Object
FIXME copied unchanged from activerecord.
-
#storage_names(repository = :default) ⇒ Object
taken from github.com/godfat/dm-mapping/tree/master.
-
#supports_disable_referential_integrity? ⇒ Boolean
FIXME copied from activerecord.
- #truncate_table(table_name) ⇒ Object
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
taken from github.com/godfat/dm-mapping/tree/master
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
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 |