defmodule EctoShorts.Actions.Error do @moduledoc """ This module generates errors from actions it can be overridden by config by setting error module Errors from Actions: [:not_found, :bad_request, :internal_server_error] """ @type t :: ErrorMessage.t @callback create_error(atom, String.t, map) :: t def call(code, message, details) do apply(error_module(), :create_error, [code, message, details]) end def error_module, do: Application.get_env(:ecto_shorts, :error_module) || EctoShorts.Actions.Error def create_error(code, message, details), do: %ErrorMessage{ code: code, message: message, details: details } end