fix: the __resource__ change broke some extensions

This commit is contained in:
Zach Daniel 2021-01-06 15:15:43 -05:00
parent fa360508ef
commit 109ed9b19c
6 changed files with 8 additions and 10 deletions

View file

@ -892,7 +892,7 @@ defmodule Ash.Actions.Relationships do
) )
end end
defp clear_relationships(%{__resource__: resource} = record) do defp clear_relationships(%resource{} = record) do
resource resource
|> Ash.Resource.relationships() |> Ash.Resource.relationships()
|> Enum.reduce(record, fn relationship, record -> |> Enum.reduce(record, fn relationship, record ->

View file

@ -76,7 +76,7 @@ defmodule Ash.Actions.SideLoad do
defp tenant_from_data([%{__metadata__: %{tenant: tenant}} | _]), do: tenant defp tenant_from_data([%{__metadata__: %{tenant: tenant}} | _]), do: tenant
defp tenant_from_data(_), do: nil 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 when is_list(data) do
side_loads side_loads
|> Enum.sort_by(fn {key, _value} -> |> Enum.sort_by(fn {key, _value} ->
@ -561,12 +561,12 @@ defmodule Ash.Actions.SideLoad do
[] -> [] ->
false false
[%{__resource__: resource} = item] -> [%resource{} = item] ->
item item
|> Map.take(Ash.Resource.primary_key(resource)) |> Map.take(Ash.Resource.primary_key(resource))
|> Enum.to_list() |> Enum.to_list()
[%{__resource__: resource} | _] = items -> [%resource{} | _] = items ->
pkey = Ash.Resource.primary_key(resource) pkey = Ash.Resource.primary_key(resource)
[or: Enum.map(items, fn item -> item |> Map.take(pkey) |> Enum.to_list() end)] [or: Enum.map(items, fn item -> item |> Map.take(pkey) |> Enum.to_list() end)]
end end

View file

@ -673,7 +673,7 @@ defmodule Ash.Api do
end end
end end
def load(api, [%{__resource__: resource} | _] = data, query, opts) do def load(api, [%resource{} | _] = data, query, opts) do
query = query =
case query do case query do
%Ash.Query{} = query -> %Ash.Query{} = query ->

View file

@ -106,12 +106,12 @@ defmodule Ash.Api.Interface do
end end
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() id = record |> Map.take(Ash.Resource.primary_key(resource)) |> Enum.to_list()
get!(resource, id, params) get!(resource, id, params)
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() id = record |> Map.take(Ash.Resource.primary_key(resource)) |> Enum.to_list()
get(resource, id, params) get(resource, id, params)
end end

View file

@ -90,7 +90,7 @@ defmodule Ash.Changeset do
@spec new(Ash.resource() | Ash.record(), initial_attributes :: map) :: t @spec new(Ash.resource() | Ash.record(), initial_attributes :: map) :: t
def new(resource, initial_attributes \\ %{}) def new(resource, initial_attributes \\ %{})
def new(%{__resource__: resource} = record, initial_attributes) do def new(%resource{} = record, initial_attributes) do
tenant = tenant =
record record
|> Map.get(:__metadata__, %{}) |> Map.get(:__metadata__, %{})

View file

@ -11,7 +11,6 @@ defmodule Ash.Schema do
alias Ash.Query.Aggregate alias Ash.Query.Aggregate
use Ecto.Schema use Ecto.Schema
@primary_key false @primary_key false
@derive {Inspect, except: [:__resource__]}
schema Ash.DataLayer.source(__MODULE__) do schema Ash.DataLayer.source(__MODULE__) do
for relationship <- Ash.Resource.relationships(__MODULE__) do for relationship <- Ash.Resource.relationships(__MODULE__) do
@ -31,7 +30,6 @@ defmodule Ash.Schema do
field(:aggregates, :map, virtual: true, default: %{}) field(:aggregates, :map, virtual: true, default: %{})
field(:calculations, :map, virtual: true, default: %{}) field(:calculations, :map, virtual: true, default: %{})
field(:__metadata__, :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 for aggregate <- Ash.Resource.aggregates(__MODULE__) do
{:ok, type} = Aggregate.kind_to_type(aggregate.kind, :string) {:ok, type} = Aggregate.kind_to_type(aggregate.kind, :string)