defmodule Terminator.UUID.Ability do
@moduledoc """
Ability is main representation of a single permission
"""
use Terminator.UUID.Schema
import Ecto.Changeset
alias __MODULE__
@typedoc "An ability struct"
@type t :: %Ability{}
schema "terminator_uuid_abilities" do
field(:identifier, :string)
field(:name, :string)
timestamps()
end
def changeset(%Ability{} = struct, params \\ %{}) do
struct
|> cast(params, [:identifier, :name])
|> validate_required([:identifier, :name])
|> unique_constraint(:identifier, message: "Ability already exists")
end
def build(identifier, name) do
changeset(%Ability{}, %{
identifier: identifier,
name: name
})
end
end