Implement full-text search for members closes #11 #163

Merged
carla merged 6 commits from feature/11-fulltext-search into main 2025-09-29 14:26:38 +02:00
3 changed files with 9 additions and 8 deletions
Showing only changes of commit 02b3084789 - Show all commits

View file

@ -167,7 +167,10 @@ defmodule Mv.Membership.Member do
allow_nil? true
end
attribute :search_vector, AshPostgres.Tsvector, writable?: false, public?: false, select_by_default?: false
attribute :search_vector, AshPostgres.Tsvector,
writable?: false,
public?: false,
select_by_default?: false
end
relationships do

View file

@ -20,8 +20,7 @@ defmodule MvWeb.Components.SearchBarComponent do
@impl true
def render(assigns) do
~H"""
<form phx-change="search"
phx-target={@myself}class="flex" role="search" aria-label="Search">
<form phx-change="search" phx-target={@myself} class="flex" role="search" aria-label="Search">
<label class="input">
<svg
class="h-[1em] opacity-50"

View file

@ -27,13 +27,12 @@ defmodule MvWeb.MemberLive.Index do
@impl true
def handle_info({:search_changed, q}, socket) do
members =
Mv.Membership.Member
|> Ash.Query.filter(
expr(fragment("search_vector @@ plainto_tsquery('simple', ?)", ^q))
)
|> Ash.read!()
Mv.Membership.Member
|> Ash.Query.filter(expr(fragment("search_vector @@ plainto_tsquery('simple', ?)", ^q)))
|> Ash.read!()
IO.inspect(members)
{:noreply,
socket
|> assign(:query, q)