Skip to main content

lib/ex_sql/ecto/result.ex

defmodule ExSQL.Ecto.Result do
  @moduledoc false

  defstruct command: nil, columns: [], rows: [], num_rows: 0

  @type t :: %__MODULE__{
          command: atom() | nil,
          columns: [String.t()],
          rows: [[term()]] | nil,
          num_rows: non_neg_integer()
        }

  def from_exsql(%ExSQL.Result{} = result) do
    %__MODULE__{
      command: result.command,
      columns: result.columns,
      rows: rows(result),
      num_rows: result.rows_affected
    }
  end

  defp rows(%ExSQL.Result{columns: [], rows: []}), do: nil
  defp rows(%ExSQL.Result{} = result), do: result.rows
end