formatting
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
carla 2025-10-30 17:20:07 +01:00
parent 3481b9dadf
commit 0c75776915
2 changed files with 23 additions and 6 deletions

View file

@ -6,7 +6,16 @@ defmodule Mv.Membership.Member do
require Ash.Query
import Ash.Expr
@default_fields [:first_name, :last_name, :email, :phone_number, :city, :street, :house_number, :postal_code]
@default_fields [
:first_name,
:last_name,
:email,
:phone_number,
:city,
:street,
:house_number,
:postal_code
]
postgres do
table "members"
@ -132,9 +141,9 @@ defmodule Mv.Membership.Member do
query
|> Ash.Query.filter(
expr(
# Substring on numeric-like fields (best effort, supports middle substrings)
fragment("search_vector @@ websearch_to_tsquery('simple', ?)", ^q2) or
fragment("search_vector @@ plainto_tsquery('simple', ?)", ^q2) or
# Substring on numeric-like fields (best effort, supports middle substrings)
contains(postal_code, ^q2) or
contains(house_number, ^q2) or
contains(phone_number, ^q2) or
@ -337,7 +346,7 @@ defmodule Mv.Membership.Member do
query
else
args =
case (opts[:fields] || opts["fields"]) do
case opts[:fields] || opts["fields"] do
nil -> %{query: q}
fields -> %{query: q, fields: fields}
end

View file

@ -29,7 +29,10 @@ defmodule Mv.Membership.FuzzySearchTest do
result =
Mv.Membership.Member
|> Mv.Membership.Member.fuzzy_search(%{query: "john", fields: [:first_name, :last_name, :email]})
|> Mv.Membership.Member.fuzzy_search(%{
query: "john",
fields: [:first_name, :last_name, :email]
})
|> Ash.read!()
assert Enum.map(result, & &1.id) == [john.id, alice.id]
@ -59,7 +62,10 @@ defmodule Mv.Membership.FuzzySearchTest do
result =
Mv.Membership.Member
|> Mv.Membership.Member.fuzzy_search(%{query: "tomas", fields: [:first_name, :last_name, :email]})
|> Mv.Membership.Member.fuzzy_search(%{
query: "tomas",
fields: [:first_name, :last_name, :email]
})
|> Ash.read!()
ids = Enum.map(result, & &1.id)
@ -80,7 +86,9 @@ defmodule Mv.Membership.FuzzySearchTest do
|> Mv.Membership.Member.fuzzy_search(%{query: ""})
|> Ash.read!()
assert Enum.sort(Enum.map(result, & &1.id)) |> Enum.uniq() |> Enum.sort()
assert Enum.sort(Enum.map(result, & &1.id))
|> Enum.uniq()
|> Enum.sort()
|> Enum.all?(fn id -> id in [a.id, b.id] end)
end