Carbonite.Multi (Carbonite v0.16.0)

View Source

This module provides functions for dealing with audit trails in the context of Ecto.Multi.

Summary

Functions

Adds a operation to an Ecto.Multi to fetch the changes of the current transaction.

Sets the current transaction to "override mode" for all tables in the audit log.

Types

params()

(since 0.2.0)
@type params() :: map()

prefix()

(since 0.2.0)
@type prefix() :: binary()

prefix_option()

(since 0.2.0)
@type prefix_option() :: {:carbonite_prefix, prefix()}

Functions

delete_transaction_if_empty(multi, opts \\ [])

(since 0.16.0)
@spec delete_transaction_if_empty(Ecto.Multi.t(), [prefix_option()]) :: Ecto.Multi.t()

Adds an operation Ecto.Multi that calls Carbonite.delete_transaction_if_empty/2.

Multi step is called :delete_carbonite_transaction if no :carbonite_prefix option is given, otherwise {:delete_carbonite_transaction, <prefix>}.

See Carbonite.delete_transaction_if_empty/2 for options.

fetch_changes(multi, opts \\ [])

(since 0.5.0)
@spec fetch_changes(Ecto.Multi.t(), [prefix_option()]) :: Ecto.Multi.t()

Adds a operation to an Ecto.Multi to fetch the changes of the current transaction.

Useful for returning all transaction changes to the caller.

Multi step is called :carbonite_changes.

See Carbonite.fetch_changes/2 for options.

Example

Ecto.Multi.new()
|> Carbonite.Multi.insert_transaction(%{meta: %{type: "create_rabbit"}})
|> Ecto.Multi.insert(:rabbit, fn _ -> Rabbit.changeset(%{}) end)
|> Carbonite.Multi.fetch_changes()

insert_transaction(multi, params \\ %{}, opts \\ [])

(since 0.2.0)
@spec insert_transaction(Ecto.Multi.t(), params(), [prefix_option()]) ::
  Ecto.Multi.t()

Adds an insert operation for a Carbonite.Transaction to an Ecto.Multi.

Multi step is called :carbonite_transaction if no :carbonite_prefix option is given, otherwise {:carbonite_transaction, <prefix>}.

See Carbonite.insert_transaction/3 for options.

Example

Ecto.Multi.new()
|> Carbonite.Multi.insert_transaction(%{meta: %{type: "create_rabbit"}})
|> Ecto.Multi.insert(:rabbit, fn _ -> Rabbit.changeset(%{}) end)

override_mode(multi, opts \\ [])

(since 0.2.0)
@spec override_mode(Ecto.Multi.t(), [
  {:to, Carbonite.Trigger.mode()} | prefix_option()
]) ::
  Ecto.Multi.t()

Sets the current transaction to "override mode" for all tables in the audit log.

See Carbonite.override_mode/2 for options.