query_options[:page]
is no longer ignored when passed to use Calcinator.Resources.Ecto.Repo
's list/1
by default. To restore the old behavior change the paginator to Calcinator.Resources.Ecto.Repo.Pagination.Ignore
:
config :calcinator, Calcinator.Resources.Ecto.Repo, paginator: Calcinator.Resources.Ecto.Repo.Pagination.Ignore
In order to support passing the entire Calcinator.t
struct to calcinator_resources
event callbacks in instrumenters (Callback.Instrumenter
), Calcinator.get/4
now requires a Calcinator.t
for the first argument instead of the Calcinator.Resources.t
module.
Before
Calcinator.get(calcinator.resources_module, params, "id", query_options)
After
Calcinator.get(calcinator, params, "id", query_options)
In order to support preloading of associations as required by Ecto.Changeset.put_assoc/3
for many_to_many
association support, Calcinator.Resources.changeset/1,2
may now access the backing store, which means an {:error, :ownership}
can occur. Instead of having the type of the callbacks be Ecto.Changeset.t | {:error, reason}
, it is better to use a proper Either type and use {:ok, Ecto.Changeset.t} | {:error, reason}
, so any callback that returned Ecto.Changeset.t
before must now return {:ok, Ecto.Changeset.t}
.
Calcinator.Resources.allow_sandbox_access/1
must now return :ok | {:error, :sandbox_access_disallowed}
. The previous {:already, :allowed | :owner}
maps to :ok
while :not_found
maps to {:error, :sandbox_access_disallowed}
.
If you previously had total coverage for all return types from Calcinator
actions, they now also return {:error, :sandbox_access_disallowed}
and {:error, :timeout}
. Previously, instead of {:error, :sandbox_access_disallowed}
, :not_found
may been returned, but that was a bug that leaked an implementation detail from how DBConnection.Ownership
works, so it was removed.
Calcinator.Resources.delete
deletes a changeset instead of a resource struct to allow constraints to be added to the Ecto.Changeset.t
so that database constraint errors are transformed to validation errors. Calcinator.delete
now takes, as a second argument, the Calcinator.Resources.query_options
If you used use Calcinator.Resources.Ecto.Repo
, it now generates delete/2
(instead of delete/1
) that expects an Ecto.Changeset.t
and Calcinator.Resources.query_options
and calls Calcinator.Resources.Ecto.Repo.delete/3
, which now expects a changeset instead of resource struct as the second argument and the query options as the third argument.
:meta
is now a required key in Calcinator.Resources.query_options
in order to allow Calcinator.Meta.Beam
to be passed through for loopback chains.
Calcinator.Meta.Beam.put_new_lazy/2
can be used to add the sandbox token to the meta only if its not already present. It should be used in place of Calcinator.Meta.Beam.put/2
whenever the pre-existing meta beam might need to be passed through.