fix: undo the change of not returning hidden fields

this caused issues with setting ids for related entities. Instead,
we tell each changeset/query that they can ignore any unknown inputs
This commit is contained in:
Zach Daniel 2024-04-04 14:03:20 -04:00
parent 8dba194af2
commit 0d606e9948
2 changed files with 10 additions and 40 deletions

View file

@ -216,12 +216,6 @@ defmodule AshPhoenix.Form do
type: :atom,
doc: "The domain to use when calling the action"
],
skip_unknown_inputs: [
type: {:list, {:or, [:atom, :string]}},
default: [],
doc:
"A list of inputs that will be ignored by the underlying changeset if they are not accepted"
],
as: [
type: :string,
default: "form",
@ -1087,7 +1081,8 @@ defmodule AshPhoenix.Form do
|> Ash.Changeset.for_create(
form.action,
Map.drop(changeset_params, ["_form_type", "_touched", "_union_type"]),
source_opts
allow_all_keys_to_be_skipped(source_opts, changeset_params)
)
:update ->
@ -1100,7 +1095,7 @@ defmodule AshPhoenix.Form do
|> Ash.Changeset.for_update(
form.action,
Map.drop(changeset_params, ["_form_type", "_touched", "_union_type"]),
source_opts
allow_all_keys_to_be_skipped(source_opts, changeset_params)
)
:destroy ->
@ -1113,7 +1108,7 @@ defmodule AshPhoenix.Form do
|> Ash.Changeset.for_destroy(
form.action,
Map.drop(changeset_params, ["_form_type", "_touched", "_union_type"]),
source_opts
allow_all_keys_to_be_skipped(source_opts, changeset_params)
)
:read ->
@ -1234,7 +1229,6 @@ defmodule AshPhoenix.Form do
domain: form.opts[:domain],
params: params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -1259,7 +1253,6 @@ defmodule AshPhoenix.Form do
tenant: form.opts[:tenant],
domain: form.opts[:domain],
params: params,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -1342,7 +1335,6 @@ defmodule AshPhoenix.Form do
tenant: form.opts[:tenant],
domain: form.opts[:domain],
params: form_params,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -1413,7 +1405,6 @@ defmodule AshPhoenix.Form do
tenant: form.opts[:tenant],
domain: form.opts[:domain],
errors: errors?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -1434,7 +1425,6 @@ defmodule AshPhoenix.Form do
actor: form.opts[:actor],
tenant: form.opts[:tenant],
errors: errors?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
warn_on_unhandled_errors?: form.warn_on_unhandled_errors?,
@ -1488,7 +1478,6 @@ defmodule AshPhoenix.Form do
tenant: form.opts[:tenant],
domain: form.opts[:domain],
errors: errors?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
warn_on_unhandled_errors?: form.warn_on_unhandled_errors?,
@ -1517,7 +1506,6 @@ defmodule AshPhoenix.Form do
tenant: form.opts[:tenant],
domain: form.opts[:domain],
errors: errors?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
prev_data_trail: prev_data_trail,
@ -1691,7 +1679,7 @@ defmodule AshPhoenix.Form do
|> Ash.Changeset.for_create(
form.source.action.name,
changeset_params,
changeset_opts
allow_all_keys_to_be_skipped(changeset_opts, changeset_params)
)
|> before_submit.()
|> with_changeset(&Ash.create(&1, opts[:action_opts] || []))
@ -1703,7 +1691,7 @@ defmodule AshPhoenix.Form do
|> Ash.Changeset.for_update(
form.source.action.name,
changeset_params,
changeset_opts
allow_all_keys_to_be_skipped(changeset_opts, changeset_params)
)
|> before_submit.()
|> with_changeset(&Ash.update(&1, opts[:action_opts] || []))
@ -1715,7 +1703,7 @@ defmodule AshPhoenix.Form do
|> Ash.Changeset.for_destroy(
form.source.action.name,
changeset_params,
changeset_opts
allow_all_keys_to_be_skipped(changeset_opts, changeset_params)
)
|> before_submit.()
|> with_changeset(&Ash.destroy(&1, opts[:action_opts] || []))
@ -2568,7 +2556,7 @@ defmodule AshPhoenix.Form do
def params(form, opts \\ []) do
form = to_form!(form)
# These options aren't documented because they are still experimental
hidden? = Keyword.get(opts, :hidden?, false)
hidden? = Keyword.get(opts, :hidden?, true)
excluded_empty_fields =
Keyword.get(
@ -3432,7 +3420,6 @@ defmodule AshPhoenix.Form do
domain: form.opts[:domain],
actor: form.opts[:actor],
tenant: form.opts[:tenant],
skip_unknown_inputs: config[:skip_unknown_inputs] || [],
accessing_from: config[:managed_relationship],
transform_params: config[:transform_params],
prepare_source: config[:prepare_source],
@ -3943,7 +3930,6 @@ defmodule AshPhoenix.Form do
actor: actor,
tenant: tenant,
errors: error?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
warn_on_unhandled_errors?: warn_on_unhandled_errors?,
@ -3964,7 +3950,6 @@ defmodule AshPhoenix.Form do
actor: actor,
tenant: tenant,
errors: error?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
warn_on_unhandled_errors?: warn_on_unhandled_errors?,
@ -4022,7 +4007,6 @@ defmodule AshPhoenix.Form do
actor: actor,
tenant: tenant,
errors: error?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
warn_on_unhandled_errors?: warn_on_unhandled_errors?,
@ -4048,7 +4032,6 @@ defmodule AshPhoenix.Form do
actor: actor,
tenant: tenant,
errors: error?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
prev_data_trail: prev_data_trail,
@ -4163,7 +4146,6 @@ defmodule AshPhoenix.Form do
params: form_params,
warn_on_unhandled_errors?: warn_on_unhandled_errors?,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4190,7 +4172,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: form_params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4224,7 +4205,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: add_index(form_params, original_index, opts),
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4252,7 +4232,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: add_index(form_params, original_index, opts),
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
warn_on_unhandled_errors?: warn_on_unhandled_errors?,
@ -4309,7 +4288,6 @@ defmodule AshPhoenix.Form do
params: form_params,
forms: opts[:forms] || [],
errors: error?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4332,7 +4310,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: form_params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4363,7 +4340,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: form_params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4392,7 +4368,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: form_params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4437,7 +4412,6 @@ defmodule AshPhoenix.Form do
params: add_index(form_params, original_index, opts),
forms: opts[:forms] || [],
errors: error?,
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4469,7 +4443,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: add_index(form_params, original_index, opts),
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4497,7 +4470,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: form_params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4520,7 +4492,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: form_params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],
transform_params: opts[:transform_params],
@ -4553,7 +4524,6 @@ defmodule AshPhoenix.Form do
tenant: tenant,
params: form_params,
forms: opts[:forms] || [],
skip_unknown_inputs: opts[:skip_unknown_inputs] || [],
transform_params: opts[:transform_params],
accessing_from: opts[:managed_relationship],
prepare_source: opts[:prepare_source],

View file

@ -1,5 +1,5 @@
%{
"ash": {:hex, :ash, "3.0.0-rc.3", "9d2af1a4baef19ef0ef8a7f4bbdbbd640d54d62b484cdfd42e583d88c566115f", [:mix], [{:comparable, "~> 1.0", [hex: :comparable, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.8", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.1.7 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 0.6", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "83a16dace30aabb1f623e6f1b405cfe1af14f87a1411b1af9bbc745cd968a373"},
"ash": {:hex, :ash, "3.0.0-rc.11", "2eb81c33ec318b55083bd1f3d3708e7e86062a3bbca8c6c94954c505d48409cc", [:mix], [{:comparable, "~> 1.0", [hex: :comparable, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.8", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.1.7 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 0.6", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "92198b501324c9ecc6060cf563abad064d04d122c626abf6836e9cf0f5fec1cb"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
"castore": {:hex, :castore, "1.0.6", "ffc42f110ebfdafab0ea159cd43d31365fa0af0ce4a02ecebf1707ae619ee727", [:mix], [], "hexpm", "374c6e7ca752296be3d6780a6d5b922854ffcc74123da90f2f328996b962d33a"},
"comparable": {:hex, :comparable, "1.0.0", "bb669e91cedd14ae9937053e5bcbc3c52bb2f22422611f43b6e38367d94a495f", [:mix], [{:typable, "~> 0.1", [hex: :typable, repo: "hexpm", optional: false]}], "hexpm", "277c11eeb1cd726e7cd41c6c199e7e52fa16ee6830b45ad4cdc62e51f62eb60c"},
@ -34,7 +34,7 @@
"simple_sat": {:hex, :simple_sat, "0.1.1", "68a5ebe6f6d5956bd806e4881c495692c14580a2f1a4420488985abd0fba2119", [:mix], [], "hexpm", "63571218f92ff029838df7645eb8f0c38df8ed60d2d14578412a8d142a94471e"},
"sobelow": {:hex, :sobelow, "0.13.0", "218afe9075904793f5c64b8837cc356e493d88fddde126a463839351870b8d1e", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cd6e9026b85fc35d7529da14f95e85a078d9dd1907a9097b3ba6ac7ebbe34a0d"},
"sourceror": {:hex, :sourceror, "1.0.2", "c5e86fdc14881f797749d1fe5df017ca66727a8146e7ee3e736605a3df78f3e6", [:mix], [], "hexpm", "832335e87d0913658f129d58b2a7dc0490ddd4487b02de6d85bca0169ec2bd79"},
"spark": {:hex, :spark, "2.1.9", "053adb7f9b7f1059694aaf6f608fd3f13e460844f7fa7c689dabd97d6e49caf6", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.0", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "7896127fdaa01230604cd7f1ae907e54ac5038a514603a5ed209e40f6304671c"},
"spark": {:hex, :spark, "2.1.11", "8093149dfd583b5ce2c06e1fea1faaf4125b50e4703138b2cbefb78c8f4aa07f", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.0", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "1877d92ab993b860e9d828bfd72d50367c0d3a53dd84f4de5d221baf66ae8723"},
"splode": {:hex, :splode, "0.2.1", "020079ec06c9e00f8b6586852e781b5e07aee6ba588f3f45dd993831c87b0511", [:mix], [], "hexpm", "d232a933666061fe1f659d9906042fa94b9b393bb1129a4fde6fa680033b2611"},
"stream_data": {:hex, :stream_data, "0.6.0", "e87a9a79d7ec23d10ff83eb025141ef4915eeb09d4491f79e52f2562b73e5f47", [:mix], [], "hexpm", "b92b5031b650ca480ced047578f1d57ea6dd563f5b57464ad274718c9c29501c"},
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},