ash-project/ash
Ash.Resource does not translate into Ecto.Schema with correct autogenerate
已關閉
#708 建立於 2023年9月27日
enhancementgood first issue
倉庫指標
- 星標
- (2,412 顆星)
- PR 合併指標
- (平均合併 6天 6小時) (30 天內合併 26 個 PR)
描述
Describe the bug I am not sure if this is a bug or a feature seen from the project, but for me it is a bug.
To Reproduce
- Create an ecto schema where some fields have defaults and autogenerate, like etc the timestamps
defmodule Shared.Config.Version do
@moduledoc false
schema "conf_version" do
field(:version, :integer, default: 1)
timestamps()
end
end
- Create a Ash.Resource where some attribute has defaults
defmodule Shared.Ash.Config.Version do
use Ash.Resource,
data_layer: AshPostgres.DataLayer
attributes do
uuid_primary_key :id
attribute :version, :integer do
default 1
end
update_timestamp :updated_at
create_timestamp :inserted_at
end
postgres do
table "conf_version"
repo(Shared.Repo)
end
actions do
defaults [:create, :read, :update, :destroy]
end
end
Now try to insert each of them using Ecto Repo.insert! and only the Ecto schema is inserted with default values and the timestamps are autogenerated
One can also use MyAshResource.schema(:autogenerate_fields) to see the results of my question.
Expected behavior Expects the Ash.Resource to generate a Ecto.Schema that has the autogenerate options set
Shared.Config.Version.__schema__(:autogenerate_fields) #=> [:inserted_at, :updated_at]
Shared.Ash.Config.Version.__schema__(:autogenerate_fields) #=> []
%Shared.Config.Version{} |> dbg()
%Shared.Config.Version{} #=> %Shared.Config.Version{
__meta__: #Ecto.Schema.Metadata<:built, "conf_version">,
id: nil,
version: 1,
inserted_at: nil,
updated_at: nil
}
%Shared.Ash.Config.Version{} |> dbg()
%Shared.Ash.Config.Version{} #=> #Shared.Ash.Config.Version<
node: #Ash.NotLoaded<:relationship>,
__meta__: #Ecto.Schema.Metadata<:built, "conf_version">,
id: nil,
version: nil,
updated_at: nil,
inserted_at: nil,
aggregates: %{},
calculations: %{},
...
>