From 57f8844b469d154e8c7f9be357dc1e96e982343d Mon Sep 17 00:00:00 2001 From: Lefteris Laskaridis Date: Thu, 5 Sep 2013 15:13:45 +0300 Subject: [PATCH] Fixes missing #uses_sequence invokation in adapter classes for sqlite and sqlite3 --- .../data_mapper/truncation.rb | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) 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