defmodule Meilisearch.SummarizedTask do
@moduledoc """
Manipulate Meilisearch tasks.
[Task API](https://www.meilisearch.com/docs/reference/api/tasks#summarized-task-object)
"""
use TypedEctoSchema
@primary_key false
typed_embedded_schema null: false do
field(:taskUid, :integer)
field(:indexUid, :string, null: true)
field(:status, Ecto.Enum, values: [:enqueued, :processing, :succeeded, :failed, :canceled])
field(:type, Ecto.Enum,
values: [
:indexCreation,
:indexUpdate,
:indexDeletion,
:indexSwap,
:documentAdditionOrUpdate,
:documentDeletion,
:settingsUpdate,
:dumpCreation,
:taskCancelation,
:taskDeletion,
:snapshotCreation
]
)
field(:enqueuedAt, :utc_datetime)
end
def cast(data) when is_map(data) do
%__MODULE__{}
|> Ecto.Changeset.cast(data, [:taskUid, :indexUid, :status, :type, :enqueuedAt])
|> Ecto.Changeset.apply_changes()
end
end