Implements validation for required custom fields closes #274 #301

Merged
carla merged 10 commits from bugfix/274_required_custom_fields into main 2026-01-02 13:57:42 +01:00
Showing only changes of commit e3ff3e610c - Show all commits

View file

@ -21,6 +21,9 @@ defmodule Mv.Membership do
use Ash.Domain,
extensions: [AshAdmin.Domain, AshPhoenix]
require Ash.Query
import Ash.Expr
admin do
show? true
end
@ -125,6 +128,29 @@ defmodule Mv.Membership do
|> Ash.update(domain: __MODULE__)
end
@doc """
Lists only required custom fields.
This is an optimized version that filters at the database level instead of
loading all custom fields and filtering in memory.
## Returns
- `{:ok, required_custom_fields}` - List of required custom fields
- `{:error, error}` - Error reading custom fields
## Examples
iex> {:ok, required_fields} = Mv.Membership.list_required_custom_fields()
iex> Enum.all?(required_fields, & &1.required)
true
"""
def list_required_custom_fields do
Mv.Membership.CustomField
|> Ash.Query.filter(expr(required == true))
|> Ash.read(domain: __MODULE__)
end
@doc """
Updates the member field visibility configuration.