diff --git a/django_migration_linter/sql_analyser/base.py b/django_migration_linter/sql_analyser/base.py index ade1ef8..20fa325 100644 --- a/django_migration_linter/sql_analyser/base.py +++ b/django_migration_linter/sql_analyser/base.py @@ -49,6 +49,12 @@ class BaseAnalyser(object): "err_msg": "DROPPING columns", "mode": "one_liner", }, + { + "code": "DROP_TABLE", + "fn": lambda sql, **kw: sql.startswith("DROP TABLE"), + "err_msg": "DROPPING table", + "mode": "one_liner", + }, { "code": "RENAME_COLUMN", "fn": lambda sql, **kw: re.search("ALTER TABLE .* CHANGE", sql) diff --git a/django_migration_linter/sql_analyser/sqlite.py b/django_migration_linter/sql_analyser/sqlite.py index 49b09e2..e4d8a91 100644 --- a/django_migration_linter/sql_analyser/sqlite.py +++ b/django_migration_linter/sql_analyser/sqlite.py @@ -25,6 +25,16 @@ class SqliteAnalyser(BaseAnalyser): and "__old" not in sql and "new__" not in sql, }, + { + "code": "DROP_TABLE", + # TODO: improve to detect that the table names overlap + "fn": lambda sql_statements, **kw: any( + sql.startswith("DROP TABLE") for sql in sql_statements + ) + and not any(sql.startswith("CREATE TABLE") for sql in sql_statements), + "err_msg": "DROPPING table", + "mode": "transaction", + }, { "code": "NOT_NULL", "fn": lambda sql_statements, **kw: any(