From 3709cd265a7190ca844e6be985c3827b1ab7f86d Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Tue, 22 Jun 2021 23:57:10 +0000 Subject: [PATCH] [day-02] add context to create/get a user Create context module to create and fetch a user. --- lib/wabanex/users/create.ex | 9 +++++++++ lib/wabanex/users/get.ex | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 lib/wabanex/users/create.ex create mode 100644 lib/wabanex/users/get.ex diff --git a/lib/wabanex/users/create.ex b/lib/wabanex/users/create.ex new file mode 100644 index 0000000..240728f --- /dev/null +++ b/lib/wabanex/users/create.ex @@ -0,0 +1,9 @@ +defmodule Wabanex.Users.Create do + alias Wabanex.{Repo, User} + + def call(params) do + params + |> User.changeset() + |> Repo.insert() + end +end diff --git a/lib/wabanex/users/get.ex b/lib/wabanex/users/get.ex new file mode 100644 index 0000000..fc6640a --- /dev/null +++ b/lib/wabanex/users/get.ex @@ -0,0 +1,20 @@ +defmodule Wabanex.Users.Get do + alias Wabanex.{Repo, User} + + def call(id) do + id + |> Ecto.UUID.cast() + |> handle_result() + end + + defp handle_result(:error), do: {:error, "Invalid id format"} + + defp handle_result({:ok, uuid}) do + User + |> Repo.get(uuid) + |> case do + nil -> {:error, "User not found"} + user -> {:ok, user} + end + end +end