commit 789b7baf34e6f874a73ce58828ce4b4d7d15a5ce
parent 114ece136e1650a5fc0d447a8bbf0320a238960a
Author: Alberto Lerda <30939098+albertolerda@users.noreply.github.com>
Date: Tue, 25 Oct 2022 09:53:45 +0200
Merge pull request #28 from dyne/get-just-pubkey
Zenflows.VF.Person: get just eddsa public key
Diffstat:
3 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/src/zenflows/vf/person/domain.ex b/src/zenflows/vf/person/domain.ex
@@ -54,6 +54,16 @@ def exists?(conds) do
where(Person, ^conds) |> Repo.exists?()
end
+@spec pubkey(Keyword.t()) :: {:ok, String.t()} | {:error, String.t()}
+def pubkey(email) do
+ where(Person, email: ^email)
+ |> select([:eddsa_public_key]) |> Repo.one()
+ |> case do
+ nil -> {:error, "not found"}
+ found -> {:ok, found.eddsa_public_key}
+ end
+end
+
@spec create(params()) :: {:ok, Person.t()} | {:error, chgset()}
def create(params) do
Multi.new()
diff --git a/src/zenflows/vf/person/resolv.ex b/src/zenflows/vf/person/resolv.ex
@@ -32,6 +32,10 @@ def person_exists(params, _) do
Domain.one(params)
end
+def person_pubkey(%{email: email}, _) do
+ Domain.pubkey(email)
+end
+
def create_person(%{person: params}, _) do
with {:ok, per} <- Domain.create(params) do
{:ok, %{agent: per}}
diff --git a/src/zenflows/vf/person/type.ex b/src/zenflows/vf/person/type.ex
@@ -83,6 +83,12 @@ object :person do
field :schnorr_public_key, :string
end
+@desc "Person eddsa public key"
+object :person_pubkey do
+ @desc @eddsa_public_key
+ field :eddsa_public_key, :string
+end
+
input_object :person_create_params do
@desc @name
field :name, non_null(:string)
@@ -182,10 +188,10 @@ object :query_person do
resolve &Resolv.person_exists/2
end
@desc "Retrieve a person from the email (if a person with that email exists)"
- field :person_pubkey, :person do
+ field :person_pubkey, :string do
meta only_guest?: true
arg :email, non_null(:string)
- resolve &Resolv.person_exists/2
+ resolve &Resolv.person_pubkey/2
end
end