defmodule AshPaperTrail.Resource.Transformers.RelateVersionResource do
@moduledoc "Relates the resource to its created version resource"
use Spark.Dsl.Transformer
alias Spark.Dsl.Transformer
# sobelow_skip ["DOS.StringToAtom"]
def transform(dsl_state) do
with {:ok, relationship} <-
Transformer.build_entity(Ash.Resource.Dsl, [:relationships], :has_many,
name: :paper_trail_versions,
destination: AshPaperTrail.Resource.Info.version_resource(dsl_state),
destination_attribute: :version_source_id
) do
{:ok,
Transformer.add_entity(dsl_state, [:relationships], %{
relationship
| source: Transformer.get_persisted(dsl_state, :module)
})}
end
end
def before?(Ash.Resource.Transformers.SetRelationshipSource), do: true
def before?(_), do: false
def after?(_), do: true
end