Skip to content

Commit

Permalink
--ignore for sqlite-utils drop-table and drop-view, closes #237
Browse files Browse the repository at this point in the history
  • Loading branch information
simonw committed Feb 25, 2021
1 parent c236894 commit bba6e24
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 9 deletions.
4 changes: 4 additions & 0 deletions docs/cli.rst
Original file line number Diff line number Diff line change
Expand Up @@ -736,6 +736,8 @@ You can drop a table using the ``drop-table`` command::

$ sqlite-utils drop-table mydb.db mytable

Use ``--ignore`` to ignore the error if the table does not exist.

.. _cli_transform_table:

Transforming tables
Expand Down Expand Up @@ -922,6 +924,8 @@ You can drop a view using the ``drop-view`` command::

$ sqlite-utils drop-view myview

Use ``--ignore`` to ignore the error if the view does not exist.

.. _cli_add_column:

Adding columns
Expand Down
18 changes: 10 additions & 8 deletions sqlite_utils/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -946,14 +946,15 @@ def create_table(
required=True,
)
@click.argument("table")
@click.option("--ignore", is_flag=True)
@load_extension_option
def drop_table(path, table, load_extension):
def drop_table(path, table, ignore, load_extension):
"Drop the specified table"
db = sqlite_utils.Database(path)
_load_extensions(db, load_extension)
if table in db.table_names():
db[table].drop()
else:
try:
db[table].drop(ignore=ignore)
except sqlite3.OperationalError:
raise click.ClickException('Table "{}" does not exist'.format(table))


Expand Down Expand Up @@ -1002,14 +1003,15 @@ def create_view(path, view, select, ignore, replace, load_extension):
required=True,
)
@click.argument("view")
@click.option("--ignore", is_flag=True)
@load_extension_option
def drop_view(path, view, load_extension):
def drop_view(path, view, ignore, load_extension):
"Drop the specified view"
db = sqlite_utils.Database(path)
_load_extensions(db, load_extension)
if view in db.view_names():
db[view].drop()
else:
try:
db[view].drop(ignore=ignore)
except sqlite3.OperationalError:
raise click.ClickException('View "{}" does not exist'.format(view))


Expand Down
23 changes: 22 additions & 1 deletion tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -1397,7 +1397,17 @@ def test_drop_table_error():
)
assert 1 == result.exit_code
assert 'Error: Table "t2" does not exist' == result.output.strip()

# Using --ignore supresses that error
result = runner.invoke(
cli.cli,
[
"drop-table",
"test.db",
"t2",
"--ignore"
],
)
assert 0 == result.exit_code

def test_drop_view():
runner = CliRunner()
Expand Down Expand Up @@ -1432,6 +1442,17 @@ def test_drop_view_error():
)
assert 1 == result.exit_code
assert 'Error: View "t2" does not exist' == result.output.strip()
# Using --ignore supresses that error
result = runner.invoke(
cli.cli,
[
"drop-view",
"test.db",
"t2",
"--ignore"
],
)
assert 0 == result.exit_code


def test_enable_wal():
Expand Down

0 comments on commit bba6e24

Please sign in to comment.