From 109ed9b19cb6146d2e40f86bcca394eda685bdcd Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Wed, 6 Jan 2021 15:15:43 -0500 Subject: [PATCH] fix: the `__resource__` change broke some extensions --- lib/ash/actions/relationships.ex | 2 +- lib/ash/actions/side_load.ex | 6 +++--- lib/ash/api/api.ex | 2 +- lib/ash/api/interface.ex | 4 ++-- lib/ash/changeset/changeset.ex | 2 +- lib/ash/resource/schema.ex | 2 -- 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/ash/actions/relationships.ex b/lib/ash/actions/relationships.ex index 3d597cb8..eba1134c 100644 --- a/lib/ash/actions/relationships.ex +++ b/lib/ash/actions/relationships.ex @@ -892,7 +892,7 @@ defmodule Ash.Actions.Relationships do ) end - defp clear_relationships(%{__resource__: resource} = record) do + defp clear_relationships(%resource{} = record) do resource |> Ash.Resource.relationships() |> Enum.reduce(record, fn relationship, record -> diff --git a/lib/ash/actions/side_load.ex b/lib/ash/actions/side_load.ex index d2a70dd7..759ba388 100644 --- a/lib/ash/actions/side_load.ex +++ b/lib/ash/actions/side_load.ex @@ -76,7 +76,7 @@ defmodule Ash.Actions.SideLoad do defp tenant_from_data([%{__metadata__: %{tenant: tenant}} | _]), do: tenant defp tenant_from_data(_), do: nil - def attach_side_loads([%{__resource__: resource} | _] = data, %{side_load: side_loads}) + def attach_side_loads([%resource{} | _] = data, %{side_load: side_loads}) when is_list(data) do side_loads |> Enum.sort_by(fn {key, _value} -> @@ -561,12 +561,12 @@ defmodule Ash.Actions.SideLoad do [] -> false - [%{__resource__: resource} = item] -> + [%resource{} = item] -> item |> Map.take(Ash.Resource.primary_key(resource)) |> Enum.to_list() - [%{__resource__: resource} | _] = items -> + [%resource{} | _] = items -> pkey = Ash.Resource.primary_key(resource) [or: Enum.map(items, fn item -> item |> Map.take(pkey) |> Enum.to_list() end)] end diff --git a/lib/ash/api/api.ex b/lib/ash/api/api.ex index 7aeb8f23..cfde7b4f 100644 --- a/lib/ash/api/api.ex +++ b/lib/ash/api/api.ex @@ -673,7 +673,7 @@ defmodule Ash.Api do end end - def load(api, [%{__resource__: resource} | _] = data, query, opts) do + def load(api, [%resource{} | _] = data, query, opts) do query = case query do %Ash.Query{} = query -> diff --git a/lib/ash/api/interface.ex b/lib/ash/api/interface.ex index d6358118..1ea031a1 100644 --- a/lib/ash/api/interface.ex +++ b/lib/ash/api/interface.ex @@ -106,12 +106,12 @@ defmodule Ash.Api.Interface do end end - def reload!(%{__resource__: resource} = record, params \\ []) do + def reload!(%resource{} = record, params \\ []) do id = record |> Map.take(Ash.Resource.primary_key(resource)) |> Enum.to_list() get!(resource, id, params) end - def reload(%{__resource__: resource} = record, params \\ []) do + def reload(%resource{} = record, params \\ []) do id = record |> Map.take(Ash.Resource.primary_key(resource)) |> Enum.to_list() get(resource, id, params) end diff --git a/lib/ash/changeset/changeset.ex b/lib/ash/changeset/changeset.ex index 4c410aec..8733ac25 100644 --- a/lib/ash/changeset/changeset.ex +++ b/lib/ash/changeset/changeset.ex @@ -90,7 +90,7 @@ defmodule Ash.Changeset do @spec new(Ash.resource() | Ash.record(), initial_attributes :: map) :: t def new(resource, initial_attributes \\ %{}) - def new(%{__resource__: resource} = record, initial_attributes) do + def new(%resource{} = record, initial_attributes) do tenant = record |> Map.get(:__metadata__, %{}) diff --git a/lib/ash/resource/schema.ex b/lib/ash/resource/schema.ex index 5d3437f9..651532ef 100644 --- a/lib/ash/resource/schema.ex +++ b/lib/ash/resource/schema.ex @@ -11,7 +11,6 @@ defmodule Ash.Schema do alias Ash.Query.Aggregate use Ecto.Schema @primary_key false - @derive {Inspect, except: [:__resource__]} schema Ash.DataLayer.source(__MODULE__) do for relationship <- Ash.Resource.relationships(__MODULE__) do @@ -31,7 +30,6 @@ defmodule Ash.Schema do field(:aggregates, :map, virtual: true, default: %{}) field(:calculations, :map, virtual: true, default: %{}) field(:__metadata__, :map, virtual: true, default: %{}) - field(:__resource__, :string, virtual: true, default: __MODULE__, redact: true) for aggregate <- Ash.Resource.aggregates(__MODULE__) do {:ok, type} = Aggregate.kind_to_type(aggregate.kind, :string)