commit 42b9ccf0c62d6c08f784e139a9b7a63d55d13386
parent 545dd499ec89dc8be410376b0878b5780c34d94c
Author: srfsh <dev@srf.sh>
Date: Wed, 6 Jul 2022 12:43:03 +0200
vf/person: make pubkeys optional when inserting
Diffstat:
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/priv/repo/migrations/20211111175352_fill_vf_agent.exs b/priv/repo/migrations/20211111175352_fill_vf_agent.exs
@@ -6,7 +6,6 @@ use Ecto.Migration
type = 'per'
AND "user" IS NOT NULL
AND email IS NOT NULL
- AND pubkeys IS NOT NULL
AND classified_as IS NULL
)
OR
diff --git a/src/zenflows/vf/person.ex b/src/zenflows/vf/person.ex
@@ -29,8 +29,8 @@ schema "vf_agent" do
field :pubkeys_encoded, :string, virtual: true
end
-@insert_reqr ~w[name user email pubkeys_encoded]a
-@insert_cast @insert_reqr ++ ~w[image note primary_location_id]a
+@insert_reqr ~w[name user email]a
+@insert_cast @insert_reqr ++ ~w[pubkeys_encoded image note primary_location_id]a
# TODO: Maybe add email to @update_cast as well?
@update_cast ~w[name image note primary_location_id user]a
@@ -52,7 +52,6 @@ def chgset(params) do
|> Changeset.unique_constraint(:name)
|> Changeset.unique_constraint(:email)
|> Changeset.assoc_constraint(:primary_location)
- |> Changeset.check_constraint(:pubkeys, name: :type_mutex)
end
# update changeset
@@ -80,11 +79,17 @@ end
@spec decode_pubkeys(Changeset.t()) :: Changeset.t()
defp decode_pubkeys(cset) do
- with {:ok, val} <- Changeset.fetch_change(cset, :pubkeys_encoded),
- {:ok, decoded} <- Base.url_decode64(val) do
- Changeset.put_change(cset, :pubkeys, decoded)
- else _ ->
- Changeset.add_error(cset, :pubkeys, "not valid url-safe base64-encoded string")
+ case Changeset.fetch_change(cset, :pubkeys_encoded) do
+ {:ok, val} ->
+ case Base.url_decode64(val) do
+ {:ok, decoded} ->
+ Changeset.put_change(cset, :pubkeys, decoded)
+
+ :error ->
+ Changeset.add_error(cset, :pubkeys, "not valid url-safe base64-encoded string")
+ end
+ :error ->
+ cset
end
end
end