51 lines
1.2 KiB
Elixir
51 lines
1.2 KiB
Elixir
defmodule Mix.Tasks.Mobilizon.SetupSearch do
|
|
@moduledoc """
|
|
Temporary task to insert search data from existing events
|
|
|
|
This task will be removed in version 1.0.0-beta.3
|
|
"""
|
|
|
|
use Mix.Task
|
|
|
|
import Ecto.Query
|
|
|
|
alias Mobilizon.Events.Event
|
|
alias Mobilizon.Service.Workers
|
|
alias Mobilizon.Storage.Repo
|
|
|
|
require Logger
|
|
|
|
@shortdoc "Insert search data"
|
|
def run([]) do
|
|
Mix.Task.run("app.start")
|
|
|
|
events =
|
|
Event
|
|
|> preload([e], :tags)
|
|
|> Repo.all()
|
|
|
|
nb_events = length(events)
|
|
|
|
IO.puts("\nStarting setting up search for #{nb_events} events, this can take a while…\n")
|
|
insert_search_event(events, nb_events)
|
|
end
|
|
|
|
defp insert_search_event([%Event{url: url} = event | events], nb_events) do
|
|
case Workers.BuildSearch.insert_search_event(event) do
|
|
{:ok, _} ->
|
|
Logger.debug("Added event #{url} to the search")
|
|
|
|
{:error, res} ->
|
|
Logger.error("Error while adding event #{url} to the search: #{inspect(res)}")
|
|
end
|
|
|
|
ProgressBar.render(nb_events - length(events), nb_events)
|
|
|
|
insert_search_event(events, nb_events)
|
|
end
|
|
|
|
defp insert_search_event([], nb_events) do
|
|
IO.puts("\nFinished setting up search for #{nb_events} events!\n")
|
|
end
|
|
end
|