Skip to main content

lib/quack_db/extension.ex

defmodule QuackDB.Extension do
  @moduledoc """
  SQL builders for DuckDB extension management.

  These helpers build `INSTALL` and `LOAD` statements while validating extension
  names as SQL identifiers. They return iodata so they can be passed directly to
  `QuackDB.query/4`, `QuackDB.query!/4`, or `Repo.query/3`.

      alias QuackDB.Extension

      QuackDB.query!(conn, Extension.install(:httpfs))
      QuackDB.query!(conn, Extension.load(:httpfs))

  `QuackDB.SQL.install/1` and `QuackDB.SQL.load/1` remain available as the
  lower-level generic SQL helpers.
  """

  @doc "Builds an `INSTALL extension;` statement."
  @spec install(atom() | String.t()) :: iodata()
  def install(extension), do: QuackDB.SQL.install(extension)

  @doc "Builds a `LOAD extension;` statement."
  @spec load(atom() | String.t()) :: iodata()
  def load(extension), do: QuackDB.SQL.load(extension)
end