feat: optimize required custom fields query
This commit is contained in:
parent
2d2865b5a6
commit
e3ff3e610c
1 changed files with 26 additions and 0 deletions
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue