defmodule AshPostgres.Transformers.ValidateReferences do @moduledoc "Ensures that all `references` on a resource refer to a real relationship" use Spark.Dsl.Transformer alias Spark.Dsl.Transformer def after_compile?, do: true def transform(dsl) do dsl |> AshPostgres.DataLayer.Info.references() |> Enum.each(fn reference -> unless Ash.Resource.Info.relationship(dsl, reference.relationship) do raise Spark.Error.DslError, path: [:postgres, :references, reference.relationship], module: Transformer.get_persisted(dsl, :module), message: "Found reference configuration for relationship `#{reference.relationship}`, but no such relationship exists" end end) {:ok, dsl} end end