defmodule MishkaCms.Runtime.Resources.Changes.SendToOban do
use Ash.Resource.Change
@impl true
def change(changeset, _opts, _context) do
IO.inspect(changeset, label: "changeset==========")
Ash.Changeset.after_action(changeset, fn changeset, record ->
if changeset.action.type != :update or changeset.context[:changed?] do
enqueue_job(changeset, record)
end
{:ok, record}
end)
end
# UPDATED this function
@impl true
def atomic(changeset, opts, context) do
{:ok, change(changeset, opts, context)}
end
if Code.ensure_loaded?(Mix) and Mix.env() == :test do
defp enqueue_job(_changeset, _record) do
:ok
end
else
defp enqueue_job(changeset, record) do
original_record = changeset.data
# Get the old values with defaults
old_data = %{
active: Map.get(original_record, :active, false),
precompile: Map.get(original_record, :precompile, false)
}
%{
resource: inspect(changeset.resource),
action: changeset.action.type,
data:
Ash.Resource.Info.attributes(changeset.resource)
|> Enum.map(fn attr -> {attr.name, Map.get(record, attr.name)} end)
|> Map.new(),
old_data: old_data
}
|> MishkaCms.Runtime.Workers.RuntimeCompilerWorker.new()
|> Oban.insert()
end
end
end
defmodule MishkaCms.Runtime.Resources.Changes.SendToOban do
use Ash.Resource.Change
@impl true
def change(changeset, _opts, _context) do
IO.inspect(changeset, label: "changeset==========")
Ash.Changeset.after_action(changeset, fn changeset, record ->
if changeset.action.type != :update or changeset.context[:changed?] do
enqueue_job(changeset, record)
end
{:ok, record}
end)
end
# UPDATED this function
@impl true
def atomic(changeset, opts, context) do
{:ok, change(changeset, opts, context)}
end
if Code.ensure_loaded?(Mix) and Mix.env() == :test do
defp enqueue_job(_changeset, _record) do
:ok
end
else
defp enqueue_job(changeset, record) do
original_record = changeset.data
# Get the old values with defaults
old_data = %{
active: Map.get(original_record, :active, false),
precompile: Map.get(original_record, :precompile, false)
}
%{
resource: inspect(changeset.resource),
action: changeset.action.type,
data:
Ash.Resource.Info.attributes(changeset.resource)
|> Enum.map(fn attr -> {attr.name, Map.get(record, attr.name)} end)
|> Map.new(),
old_data: old_data
}
|> MishkaCms.Runtime.Workers.RuntimeCompilerWorker.new()
|> Oban.insert()
end
end
end