lib/securex_user_roles.ex

defmodule SecureX.UserRoles do
  alias SecureXWeb.{UserRoleController}

  @moduledoc """
  Contains CRUD For UserRoles.
  """

  @doc """
  Get list Of UserRoles by `user_id`.

  ## Examples

      iex> get(%{"user_id" => 0})
      {:error, :no_user_roles_found}

      iex> get(%{"user_id" => 1})
      {:ok,
          [
            %UserRole{
              role_id: "admin",
              user_id: 1
            },
            %UserRole{
              role_id: "super_admin",
              user_id: 1
            }
          ]
      }
  """
  @spec get(map()) :: tuple()
  def get(params), do: UserRoleController.get(params)

  @doc """
  Add an UserRole. You can send either `Atom Map` or `String Map` to add an UserRole.

  ## Examples

      iex> create(%{"user_id" => 1, "role_id" => "super_admin"})
      %UserRole{
        id: 1,
        user_id: 1,
        role_id: "super_admin"
      }
  """
  @spec add(map()) :: tuple()
  def add(params) do
    case UserRoleController.create(params) do
      {:error, error} -> {:error, error}
      {:ok, role} -> {:ok, role}
    end
  end

  @doc """
  Delete an UserRole.

  ## Examples

      iex> delete(%{"id" => 1)
      %Permission{
        id: 1,
        user_id: 1,
        role_id: "admin"
      }
  """
  @spec delete(map()) :: tuple()
  def delete(params) do
    case UserRoleController.delete(params) do
      {:error, error} -> {:error, error}
      {:ok, role} -> {:ok, role}
    end
  end
end