feat: optimize required custom fields query

This commit is contained in:
carla 2025-12-23 17:01:50 +01:00
parent 2d2865b5a6
commit e3ff3e610c

View file

@ -21,6 +21,9 @@ defmodule Mv.Membership do
use Ash.Domain, use Ash.Domain,
extensions: [AshAdmin.Domain, AshPhoenix] extensions: [AshAdmin.Domain, AshPhoenix]
require Ash.Query
import Ash.Expr
admin do admin do
show? true show? true
end end
@ -125,6 +128,29 @@ defmodule Mv.Membership do
|> Ash.update(domain: __MODULE__) |> Ash.update(domain: __MODULE__)
end 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 """ @doc """
Updates the member field visibility configuration. Updates the member field visibility configuration.