diff --git a/lib/database_cleaner/data_mapper/truncation.rb b/lib/database_cleaner/data_mapper/truncation.rb index 1198632..98207b5 100644 --- a/lib/database_cleaner/data_mapper/truncation.rb +++ b/lib/database_cleaner/data_mapper/truncation.rb @@ -53,7 +53,7 @@ module DataMapper def truncate_table(table_name) execute("DELETE FROM #{quote_name(table_name)};") - if uses_sequence + if uses_sequence? execute("DELETE FROM sqlite_sequence where name = '#{table_name}';") end end @@ -65,6 +65,16 @@ module DataMapper yield end + private + + def uses_sequence? + sql = <<-SQL + SELECT name FROM sqlite_master + WHERE type='table' AND name='sqlite_sequence' + SQL + select(sql).first + end + end class SqliteAdapter < DataObjectsAdapter @@ -82,7 +92,7 @@ module DataMapper def truncate_table(table_name) execute("DELETE FROM #{quote_name(table_name)};") - if uses_sequence + if uses_sequence? execute("DELETE FROM sqlite_sequence where name = '#{table_name}';") end end @@ -94,6 +104,16 @@ module DataMapper yield end + private + + def uses_sequence? + sql = <<-SQL + SELECT name FROM sqlite_master + WHERE type='table' AND name='sqlite_sequence' + SQL + select(sql).first + end + end # FIXME