mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 05:23:03 +12:00
3d30fd848f
fixes #883
55 lines
986 B
Elixir
55 lines
986 B
Elixir
defmodule Embed do
|
|
use Ash.Resource, data_layer: :embedded
|
|
|
|
attributes do
|
|
# uuid_primary_key :id
|
|
attribute :name, :string
|
|
end
|
|
|
|
actions do
|
|
defaults [:create, :update, :destroy, :read]
|
|
end
|
|
end
|
|
|
|
defmodule Resource do
|
|
use Ash.Resource
|
|
|
|
attributes do
|
|
uuid_primary_key :id
|
|
attribute :embeds, {:array, Embed}
|
|
attribute :maps, {:array, :map}
|
|
end
|
|
|
|
actions do
|
|
defaults [:create, :update, :destroy, :read]
|
|
end
|
|
end
|
|
|
|
defmodule Api do
|
|
use Ash.Api
|
|
|
|
resources do
|
|
resource Resource
|
|
end
|
|
end
|
|
|
|
embeds_input = 1..100 |> Enum.map(&%{name: "Embed #{&1}"})
|
|
|
|
Resource
|
|
|> Ash.Changeset.for_create(:create, %{embeds: embeds_input, maps: embeds_input})
|
|
|> Api.create!()
|
|
|
|
Benchee.run(
|
|
%{
|
|
embeds: fn ->
|
|
Resource
|
|
|> Ash.Changeset.for_create(:create, %{embeds: embeds_input})
|
|
|> Api.create!()
|
|
end,
|
|
maps: fn ->
|
|
Resource
|
|
|> Ash.Changeset.for_create(:create, %{maps: embeds_input})
|
|
|> Api.create!()
|
|
end
|
|
}
|
|
)
|