mirror of
https://github.com/ash-project/ash_phoenix.git
synced 2024-09-20 07:12:49 +12:00
parent
25f1547a4c
commit
7360ff066e
1 changed files with 22 additions and 0 deletions
|
@ -442,6 +442,8 @@ defmodule AshPhoenix.Form do
|
|||
|> validate_opts_with_extra_keys(@for_opts)
|
||||
|> forms_for_type(:create)
|
||||
|
||||
require_action!(resource, action, :create)
|
||||
|
||||
changeset_opts =
|
||||
Keyword.drop(opts, [
|
||||
:forms,
|
||||
|
@ -540,6 +542,8 @@ defmodule AshPhoenix.Form do
|
|||
|> validate_opts_with_extra_keys(@for_opts)
|
||||
|> forms_for_type(:update)
|
||||
|
||||
require_action!(resource, action, :update)
|
||||
|
||||
changeset_opts =
|
||||
Keyword.drop(opts, [
|
||||
:forms,
|
||||
|
@ -643,6 +647,8 @@ defmodule AshPhoenix.Form do
|
|||
|> validate_opts_with_extra_keys(@for_opts)
|
||||
|> forms_for_type(:destroy)
|
||||
|
||||
require_action!(resource, action, :update)
|
||||
|
||||
changeset_opts =
|
||||
Keyword.drop(opts, [
|
||||
:forms,
|
||||
|
@ -753,6 +759,8 @@ defmodule AshPhoenix.Form do
|
|||
|> validate_opts_with_extra_keys(@for_opts)
|
||||
|> forms_for_type(:read)
|
||||
|
||||
require_action!(resource, action, :read)
|
||||
|
||||
name = opts[:as] || "form"
|
||||
id = opts[:id] || opts[:as] || "form"
|
||||
|
||||
|
@ -835,6 +843,20 @@ defmodule AshPhoenix.Form do
|
|||
|> carry_over_errors()
|
||||
end
|
||||
|
||||
defp require_action!(resource, action, type) do
|
||||
case Ash.Resource.Info.action(resource, action) do
|
||||
nil ->
|
||||
raise ArgumentError, "No such action #{inspect(action)} for resource #{inspect(resource)}"
|
||||
|
||||
%{type: ^type} ->
|
||||
:ok
|
||||
|
||||
%{type: actual_type} ->
|
||||
raise ArgumentError,
|
||||
"Expected action of type #{inspect(type)}, but #{inspect(action)} is of type #{inspect(actual_type)}"
|
||||
end
|
||||
end
|
||||
|
||||
defp set_accessing_from(changeset_or_query, opts) do
|
||||
case opts[:accessing_from] do
|
||||
{source, name} ->
|
||||
|
|
Loading…
Reference in a new issue