AshCredo.Check.Design.MissingPrimaryAction (ash_credo v0.12.1)

Copy Markdown View Source

Basics

This check is disabled by default.

Learn how to enable it via .credo.exs.

This check has a base priority of normal and works with any version of Elixir.

Explanation

When multiple actions of the same type exist (e.g., two :create actions), one should declare primary?: true. Without this, Ash raises at runtime when framework features implicitly invoke the primary action.

create :register do
  primary? true
  # ...
end

This check uses Ash's runtime introspection (Ash.Resource.Info.actions/1) to see the fully-resolved action list - including actions contributed by Spark transformers and extensions - so it catches cases where a transformer adds an action that breaks the primary-action invariant.

Requirements

Your project must be compiled before running mix credo so that the referenced resource modules are loadable. Typically chain them in a Mix alias: lint: ["compile", "credo --strict"]. If Ash is not loaded in the VM running Credo, the check is a no-op and emits a single diagnostic.

Check-Specific Parameters

There are no specific parameters for this check.

General Parameters

Like with all checks, general params can be applied.

Parameters can be configured via the .credo.exs config file.