Class: DatabaseCleaner::Spanner::Deletion

Inherits:
Strategy
  • Object
show all
Defined in:
lib/database_cleaner/spanner/deletion.rb

Constant Summary collapse

SQL =
"WITH References AS (\n  SELECT\n    ccu.TABLE_NAME AS TABLE_NAME\n    , tc.TABLE_NAME AS referenced_by\n  FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc\n  INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS ccu USING (CONSTRAINT_NAME)\n  WHERE\n    CONSTRAINT_TYPE = \"FOREIGN KEY\"\n    AND tc.TABLE_NAME <> ccu.TABLE_NAME\n)\nSELECT\n  t.TABLE_NAME AS table_name\n  , children.TABLE_NAME AS child_table_name\n  , children.ON_DELETE_ACTION AS delete_action\n  , r.referenced_by AS referenced_by\nFROM INFORMATION_SCHEMA.TABLES AS t\nLEFT JOIN INFORMATION_SCHEMA.TABLES AS children\n  ON t.TABLE_NAME = children.PARENT_TABLE_NAME\nLEFT JOIN References AS r\n  ON t.TABLE_NAME = r.table_name\nWHERE t.TABLE_TYPE = \"BASE TABLE\"\n"

Instance Method Summary collapse

Constructor Details

#initialize(only: [], except: [], batch_deletion: false, cache_tables: true) ⇒ Deletion

Returns a new instance of Deletion.



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/database_cleaner/spanner/deletion.rb', line 33

def initialize(
  only: [],
  except: [],
  batch_deletion: false,
  cache_tables: true
)
  @only = only
  @except = except
  @batch_deletion = batch_deletion
  @cache_tables = cache_tables

  @deletable_tables = {}
end

Instance Method Details

#cleanObject



47
48
49
50
51
52
53
# File 'lib/database_cleaner/spanner/deletion.rb', line 47

def clean
  if @batch_deletion
    clean_as_batch
  else
    clean_each
  end
end