feat: Add shared helper functions for actor handling
- Add Mv.Helpers module with ash_actor_opts/1 helper - Add current_actor/1 with @spec to LiveHelpers - Add ash_actor_opts/1 delegate and submit_form/3 wrapper to LiveHelpers - Standardize actor access pattern across LiveViews
This commit is contained in:
parent
295d711768
commit
fdbe673a65
2 changed files with 61 additions and 0 deletions
27
lib/mv/helpers.ex
Normal file
27
lib/mv/helpers.ex
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
defmodule Mv.Helpers do
|
||||
@moduledoc """
|
||||
Shared helper functions used across the Mv application.
|
||||
|
||||
Provides utilities that are not specific to a single domain or layer.
|
||||
"""
|
||||
|
||||
@doc """
|
||||
Converts an actor to Ash options list for authorization.
|
||||
Returns empty list if actor is nil.
|
||||
|
||||
This helper ensures consistent actor handling across all Ash operations
|
||||
in the application, whether called from LiveViews, changes, validations,
|
||||
or other contexts.
|
||||
|
||||
## Examples
|
||||
|
||||
opts = ash_actor_opts(actor)
|
||||
Ash.read(query, opts)
|
||||
|
||||
opts = ash_actor_opts(nil)
|
||||
# => []
|
||||
"""
|
||||
@spec ash_actor_opts(Mv.Accounts.User.t() | nil) :: keyword()
|
||||
def ash_actor_opts(nil), do: []
|
||||
def ash_actor_opts(actor) when not is_nil(actor), do: [actor: actor]
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue