Add ability to search on Group, Person or Event

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Chocobozzz
2019-04-12 15:04:32 +02:00
committed by Thomas Citharel
parent 20a4f7244c
commit d66bbc5414
10 changed files with 385 additions and 173 deletions

View File

@@ -18,10 +18,9 @@ defmodule MobilizonWeb.Schema do
import_types(MobilizonWeb.Schema.Actors.PersonType)
import_types(MobilizonWeb.Schema.Actors.GroupType)
import_types(MobilizonWeb.Schema.CommentType)
import_types(MobilizonWeb.Schema.SearchType)
import_types(MobilizonWeb.Schema.ConfigType)
alias MobilizonWeb.Resolvers
@desc "A struct containing the id of the deleted object"
object :deleted_object do
field(:id, :integer)
@@ -85,22 +84,6 @@ defmodule MobilizonWeb.Schema do
end)
end
@desc "A search result"
union :search_result do
types([:event, :person, :group])
resolve_type(fn
%Actor{type: :Person}, _ ->
:person
%Actor{type: :Group}, _ ->
:group
%Event{}, _ ->
:event
end)
end
def context(ctx) do
loader =
Dataloader.new()
@@ -120,14 +103,7 @@ defmodule MobilizonWeb.Schema do
Root Query
"""
query do
@desc "Search through events, persons and groups"
field :search, list_of(:search_result) do
arg(:search, non_null(:string))
arg(:page, :integer, default_value: 1)
arg(:limit, :integer, default_value: 10)
resolve(&Resolvers.Search.search_events_and_actors/3)
end
import_fields(:search_queries)
import_fields(:user_queries)
import_fields(:person_queries)
import_fields(:group_queries)