defmodule Ecto.Adapter.Transaction do @moduledoc """ Specifies the adapter transactions API. """ @type adapter_meta :: Ecto.Adapter.adapter_meta() @doc """ Runs the given function inside a transaction. Returns `{:ok, value}` if the transaction was successful where `value` is the value return by the function or `{:error, value}` if the transaction was rolled back where `value` is the value given to `rollback/1`. """ @callback transaction(adapter_meta, options :: Keyword.t(), function :: fun) :: {:ok, any} | {:error, any} @doc """ Returns true if the given process is inside a transaction. """ @callback in_transaction?(adapter_meta) :: boolean @doc """ Rolls back the current transaction. The transaction will return the value given as `{:error, value}`. See `c:Ecto.Repo.rollback/1`. """ @callback rollback(adapter_meta, value :: any) :: no_return end