Read-only SQL execution with safety checks, param binding, and result shaping.
Summary
Types
@type opts() :: [ timeout: non_neg_integer(), statement_timeout_ms: non_neg_integer(), read_only: boolean(), search_path: String.t() | nil ]
@type params() :: list()
@type query_result() :: Lotus.Result.t()
@type repo() :: module()
@type sql() :: String.t()