defmodule QuackDB.Analytics do
import QuackDB.SQL.Fragment, only: [table: 1]
@moduledoc """
Direct SQL helpers for DuckDB analytical statements.
"""
@doc "Builds a DuckDB `SUMMARIZE` profiling query for a table, source, or `{:query, sql}` tuple."
@spec summarize(String.t() | atom() | {:query, iodata()}) :: iodata()
def summarize(source) when is_atom(source), do: summarize(Atom.to_string(source))
def summarize(source) when is_binary(source) do
["SUMMARIZE SELECT * FROM ", table(source)]
end
def summarize({:query, query}) do
["SUMMARIZE ", query]
end
end