ash/benchmarks/embedded_resources.exs
2024-02-13 13:55:07 -05:00

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
}
)