defmodule Mv.Authorization do
  @moduledoc """
  Ash Domain for authorization and role management.

  ## Resources
  - `Role` - User roles that reference permission sets

  ## Public API
  The domain exposes these main actions:
  - Role CRUD: `create_role/1`, `list_roles/0`, `get_role/1`, `update_role/2`, `destroy_role/1`

  ## Admin Interface
  The domain is configured with AshAdmin for management UI.
  """
  use Ash.Domain,
    extensions: [AshAdmin.Domain, AshPhoenix]

  admin do
    show? true
  end

  resources do
    resource Mv.Authorization.Role do
      define :create_role, action: :create_role
      define :list_roles, action: :read
      define :get_role, action: :read, get_by: [:id]
      define :update_role, action: :update_role
      define :destroy_role, action: :destroy
    end
  end
end
