lib/ident/role_map/model.ex

defmodule Rivet.Ident.RoleMap do
  @moduledoc """
  Schema for representing and working with a Ident.RoleMap.
  """
  use TypedEctoSchema
  use Rivet.Ecto.Model, id_type: :int
  alias Rivet.Ident

  typed_schema "ident_role_maps" do
    belongs_to(:action, Ident.Action, foreign_key: :action_id)
    belongs_to(:role, Ident.Role, foreign_key: :role_id)
  end

  use Rivet.Ecto.Collection, required: [:action_id, :role_id], unique: [[:role_id, :action_id]]
end