retort 2.0.0
https://hex.pm/packages/retort/2.0.0
Changelog
https://github.com/C-S-D/retort/compare/v1.3.2…v2.0.0
Enhancements
-
Document
Retort.Resources
-
Update to
alembic
3.3.0
-
Drop the need for
changeset_render
by usingJaSerializer.Formatter.Utils.format_key
directly to make it the same ascalcinator
.
-
Drop the need for
-
Update to
calcinator
3.0.0
-
Retort.Response.Error.to_calcinator_error(Retort.Response.t, Ecto.Changeset.t)
will convertRetort.Response.t
data
Alembic.Document.t
errors
to aCalcinator
error. If theAlembic.Error.t
format is unrecognized, it is assumed to be convertable toEcto.Changeset.t
errors usingRetort.Response.Error.Ecto.Changeset.add_alembic_errors(changeset, errors)
-
Bug Fixes
-
A missed rename left the application name used for
Application.get_env
as the original:interpreter_server_rpc
instead of:retort
inRetort.Resources.timeout/2
. -
Fix (
Map
->map
) typo inRetort.Client.Generic.start_link
options. -
Retort.Resources.client_start_link
should not have been 0-arity, but 1-arity, so it can take in theclient_start_link_options
as an argument instead of depending on lookup bymodule
to retrieve some hidden state. -
Retort.Meta.valid!/2
checked if the Ecto.Repo was sandboxed withApplication.get_env(:retort, Retort.Repo)
, which is a faithful translation of the original in:interpreter_server_rpc
, but has the problem that it only works inretort
itself. To allow the repo to be check to be configured,Retort.Meta.valid!/2
now takes an:ecto_repo_module
option, which is check if its sandboxed if any of the:ecto_schema_modules
are database-backed (have a non-blank__schema__(:source)
). -
Retort.Server.Generic.Resources.handle_method/2
converts{:error, :sandbox_token_missing}
into RPC response errors instead of aCaseClauseError
exception.
Incompatible Changes
-
Retort.Resources.client_start_link
callback changes arity from0
to1
and now should take inoptions
instead of callingRetort.Resources.client_start_link_options/0
. -
Retort.Client.Generic.start_link
calls where theecto_schema_module_by_type
ecto_schema_module
s are database-backed will now require:ecto_repo_module
to check if theEcto.Repo.t
is sandboxed. -
Require
alembic
~> 3.3
-
changeset_render
is no longer needed forRetort.Server.Generic.Resources
, soRetort.Server.Generic.Resources.t
has been removed and aCalcinator.t
should be used as the state instead.
-
-
Require to
calcinator
~> 3.0
-
Retort.Response.Error.Ecto.Changeset.add_alembic_errors(changeset, [Alembic.Error.t])
will convert theAlembic.Error.t
s to validation errors added to thechangeset
. It’s a way to reverse the conversion done byAlembic.Document.from_ecto_changeset
inalembic
3.3.0
. -
Retort.Response.Error.to_calcinator_error(Retort.Response.t, Ecto.Changeset.t)
will convertRetort.Response.t
data
Alembic.Document.t
errors
to aCalcinator
error. If theAlembic.Error.t
format is unrecognized, it is assumed to be convertable toEcto.Changeset.t
errors usingRetort.Response.Error.Ecto.Changeset.add_alembic_errors(changeset, errors)
-
Retort.Server.Generic.Resoruces.handle_method/2
is simplified usingput_rendered_or_error/2
, so that the large, duplicatecase
s are eliminated and error handling remains consistent across actions. For error,put_calcinator_error
is called. -
use Retort.Resources
generatesdelete(changeset, query_options)
to match the updatedCalcinator.Resources.delete/2
. -
Retort.Resources.client_start_link_options
now takes(module, query_options)
, so that if:meta
exists inquery_options
and “beam” is set, then the pre-existing “beam” will be reused. -
All action callbacks in
Retort.Resources
catch{:exit, {:timeout, _}}
from theRetort.Client.Generic
calls, log them, and then return{:error, :timeout}
, so thatCalcinator.Controller
can turn it into a 504 Gateway Timeout instead of crashing the calling process. -
All action callbacks in
Retort.Resources
can transform{:error, %Retort.Response.Error{}}
toCalcinator
errors usingRetort.Client.Generic.error_to_calcinator_error
. -
meta
in query_options is put back into the mergable params passed toRetort.Client.Generic
calls inRetort.Resources
-