Skip to main content

lib/jido_memory/actions/forget.ex

defmodule Jido.Memory.Actions.Forget do
  @moduledoc """
  Explicit action for deleting one memory record.
  """

  use Jido.Action,
    name: "memory_forget",
    description: "Delete a memory record",
    schema: [
      id: [type: :string, required: true, doc: "Record id"],
      namespace: [type: :string, required: false, doc: "Override namespace"],
      store: [type: :any, required: false, doc: "Store declaration"],
      store_opts: [type: :any, required: false, doc: "Store options"]
    ]

  @impl true
  def run(%{id: id} = params, context) do
    case Jido.Memory.Runtime.forget(context, id, params |> Map.delete(:id) |> Map.to_list()) do
      {:ok, deleted?} -> {:ok, %{last_memory_deleted?: deleted?}}
      {:error, reason} -> {:error, reason}
    end
  end
end