Coverage for src / sql_tool / cli / commands / query.py: 100%
12 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-02-14 15:28 -0500
« prev ^ index » next coverage.py v7.13.4, created at 2026-02-14 15:28 -0500
1from __future__ import annotations
3from typing import Annotated
5import structlog
6import typer
8from sql_tool.cli.commands._shared import get_client, output_result
9from sql_tool.core.query_source import resolve_query_source
11log = structlog.get_logger()
14def query_command(
15 ctx: typer.Context,
16 file: Annotated[
17 str | None,
18 typer.Argument(help="SQL file to execute"),
19 ] = None,
20 execute: Annotated[
21 str | None,
22 typer.Option("--execute", "-e", help="Execute inline SQL query"),
23 ] = None,
24 timeout: Annotated[
25 float | None,
26 typer.Option("--timeout", "-t", help="Query timeout in seconds"),
27 ] = None,
28) -> None:
29 """Execute a SQL query from file, inline (-e), or stdin."""
30 sql = resolve_query_source(inline=execute, file_path=file)
32 with get_client(ctx, timeout=timeout) as client:
33 result = client.execute_query(sql)
35 output_result(ctx, result)