defmodule SQLFormatter do alias SQLFormatter.NIF alias SQLFormatter.Opts @type opts :: [ indent: non_neg_integer(), uppercase: boolean(), lines_between_queries: non_neg_integer() ] @doc """ Formats a SQL string. ## Options - `:indent`: The number of spaces to indent the formatted SQL. Defaults to 2. - `:uppercase`: Whether to use uppercase for keywords. Defaults to `false`. - `:lines_between_queries`: The number of lines to insert between queries. Defaults to 1. ## Examples ```elixir SQLFormatter.format("SELECT * FROM users") #=> \""" SELECT * FROM users \""" ``` ```elixir SQLFormatter.format("SELECT * FROM users", indent: 4) #=> \""" SELECT * FROM users \""" ``` """ @spec format(String.t(), opts) :: String.t() def format(sql, opts \\ []) do NIF.format(sql, struct(Opts, opts)) end end