defmodule AshPaperTrail do
@moduledoc """
Documentation for `AshPaperTrail`.
"""
def allow_resource_versions({m, f, a}, resource) do
apply(m, f, a) || allow_resource_versions(nil, resource)
end
@regex ~r/\.Version$/
def allow_resource_versions(nil, resource) do
resource_name = to_string(resource)
if String.match?(resource_name, @regex) do
original_resource =
try do
resource_name
|> String.replace(@regex, "")
|> String.to_existing_atom()
rescue
ArgumentError -> false
end
original_resource && AshPaperTrail.Resource in Spark.extensions(original_resource)
else
false
end
end
end