This repository has been archived on 2024-06-24. You can view files and clone it, but cannot push or open issues or pull requests.
graphql-lightning-talk/lib/faces/gallery/importer.ex
2018-04-08 10:06:11 +12:00

23 lines
607 B
Elixir

defmodule Faces.Gallery.Importer do
alias Faces.Gallery.{Person, GithubUserData}
alias Faces.Repo
def import(username) do
with {:ok, user_data} <- GithubUserData.get(username),
{:ok, changeset} <- generate_changeset(user_data),
{:ok, person} <- upsert(changeset) do
{:ok, person}
else
{:error, reason} -> {:error, reason}
end
end
defp generate_changeset(user_data) do
{:ok, Person.changeset(%Person{}, user_data)}
end
defp upsert(changeset) do
changeset
|> Repo.insert(on_conflict: :replace_all, conflict_target: [:username])
end
end