defmodule Meilisearch.Dump do
@moduledoc """
Manipulate Meilisearch dumps.
[Dumps API](https://www.meilisearch.com/docs/reference/api/dump)
"""
@doc """
Trigger a dump creation in your Meilisearch instance.
[Meilisearch documentation](https://www.meilisearch.com/docs/reference/api/dump#create-a-dump)
## Examples
iex> client = Meilisearch.Client.new(endpoint: "http://localhost:7700", key: "master_key_test")
iex> Meilisearch.Dump.create(client)
{:ok, %{
taskUid: 0,
indexUid: nil,
status: :enqueued,
type: :dumpCreation,
enqueuedAt: ~U[2021-08-12 10:00:00]
}}
"""
@spec create(Tesla.Client.t()) ::
{:ok, Meilisearch.SummarizedTask.t()} | {:error, Meilisearch.Client.error()}
def create(client) do
with {:ok, data} <-
client
|> Tesla.post("/dumps", %{})
|> Meilisearch.Client.handle_response() do
{:ok, Meilisearch.SummarizedTask.cast(data)}
end
end
end