mirror of
https://github.com/ClaperCo/Claper.git
synced 2025-12-15 19:37:53 +01:00
32 lines
656 B
Elixir
32 lines
656 B
Elixir
defmodule Claper.Accounts.Role do
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
|
|
@type t :: %__MODULE__{
|
|
id: integer(),
|
|
name: String.t(),
|
|
permissions: map(),
|
|
inserted_at: NaiveDateTime.t(),
|
|
updated_at: NaiveDateTime.t()
|
|
}
|
|
|
|
schema "roles" do
|
|
field :name, :string
|
|
field :permissions, :map, default: %{}
|
|
|
|
has_many :users, Claper.Accounts.User
|
|
|
|
timestamps()
|
|
end
|
|
|
|
@doc """
|
|
Changeset for creating or updating a role.
|
|
"""
|
|
def changeset(role, attrs) do
|
|
role
|
|
|> cast(attrs, [:name, :permissions])
|
|
|> validate_required([:name])
|
|
|> unique_constraint(:name)
|
|
end
|
|
end
|