Current section

Files

Jump to
guard lib doorman users.ex
Raw

lib/doorman/users.ex

defmodule Doorman.Users do
alias Doorman.{Repo, User, Device}
import Ecto.Query
def delete_user(user) do
Repo.delete(user)
end
def update_user(user, changes) do
changeset = User.changeset(user, changes)
case Repo.update(changeset) do
{:ok, user} ->
{:ok, user}
{:error, changeset} ->
{:error, Repo.changeset_errors(changeset), changeset}
end
end
def create_user(changes \\ %{}) do
case %User{}
|> User.changeset(changes)
|> Repo.insert() do
{:ok, user} ->
{:ok, user}
{:error, changeset} ->
{:error, Repo.changeset_errors(changeset), changeset}
end
end
def get_by_email(email) do
trimmed = trimmer(email)
case get_by(email: trimmed) do
nil -> get_by(requested_email: trimmed)
confirmed -> confirmed
end
end
def get_by_email!(email) do
trimmed = trimmer(email)
case get_by(email: trimmed) do
nil -> get_by!(requested_email: trimmed)
confirmed -> confirmed
end
end
def get_by_mobile(mobile) do
case get_by(mobile: mobile) do
nil -> get_by(requested_mobile: mobile)
confirmed -> confirmed
end
end
def get_by_mobile!(mobile) do
case get_by(mobile: mobile) do
nil -> get_by!(requested_mobile: mobile)
confirmed -> confirmed
end
end
def get_by_username(username) do
get_by(username: trimmer(username))
end
def get_by_username!(username) do
get_by!(username: trimmer(username))
end
defp trimmer(str) do
str |> String.trim() |> String.downcase()
end
def get(id) do
Repo.get(User, id)
end
def get!(id) do
Repo.get!(User, id)
end
def get_by(opts) do
Repo.get_by(User, opts)
end
def get_by!(opts) do
Repo.get_by!(User, opts)
end
def list_devices(%User{} = user) do
Repo.all(from(d in Device, where: d.user_id == ^user.id))
end
end