diff --git a/dclient/cli.py b/dclient/cli.py index 980d7bb..d19a57e 100644 --- a/dclient/cli.py +++ b/dclient/cli.py @@ -84,6 +84,34 @@ def databases(url_or_alias, token): click.echo(json.dumps(response.json(), indent=2)) +@cli.command() +@click.argument("url_or_alias", default=None, required=False) +@click.option("--token", help="API token") +def tables(url_or_alias, token): + """ + List tables in a Datasette database + + Example usage: + + \b + dclient tables https://latest.datasette.io/fixtures + """ + url = _resolve_url(url_or_alias) + token = _resolve_token(token, url) + headers = {} + if token: + headers["Authorization"] = f"Bearer {token}" + response = httpx.get( + url.rstrip("/") + "/-/tables.json", + headers=headers, + follow_redirects=True, + timeout=30.0, + ) + if response.status_code != 200: + raise click.ClickException(f"{response.status_code} error") + click.echo(json.dumps(response.json(), indent=2)) + + @cli.command() @click.argument("url_or_alias") @click.argument("sql")