fix: Fix generated code for embeds

This commit is contained in:
Robert Prehn 2024-02-24 10:55:54 -06:00
parent 0bd0153204
commit bef0d41f0e
No known key found for this signature in database
3 changed files with 13 additions and 11 deletions

View file

@ -22,7 +22,7 @@ defmodule <%= @namespace %>.<%= @version %>.<%= class_name(@resource_name) %> do
<%= for {name, df, _} <- @properties.enum do %>field :<%= Recase.to_snake(name) %>, Ecto.Enum, values: <%= inspect(df["enum"] |> Enum.map(&Recase.to_snake(&1)) |> Enum.map(&String.to_atom/1)) %>
<% end %>
<%= if @properties.embed_one != [] do %># Embed One<% end %>
<%= for {name, df, _} <- @properties.embed_one do %>embed_one :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["$ref"]) %>
<%= for {name, df, _} <- @properties.embeds_one do %>embed_one :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["$ref"]) %>
<% end %>
<%= if @properties.embed_many != [] do %># Embed Many<% end %>
<%= for {name, df, _} <- @properties.embed_many do %>embed_many :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["$ref"]) %>

View file

@ -47,6 +47,16 @@ defmodule Kindling.Schema.Resource do
def property_type(%{"const" => _}), do: :const
for embed <- Config.embedded_resources() do
dbg(embed)
def property_type(%{"$ref" => "#/definitions/" <> unquote(embed)}), do: :embed_one
def property_type(%{"items" => %{"$ref" => "#/definitions/" <> unquote(embed)}}) do
:embed_many
end
end
def property_type(%{"$ref" => "#/definitions/" <> name}) do
if is_class_name(name) do
:has_one
@ -55,14 +65,6 @@ defmodule Kindling.Schema.Resource do
end
end
for embed <- Config.embedded_resources() do
def property_type(%{"$ref" => "#/definitions/" <> unquote(embed)}), do: :embed_one
def property_type(%{"items" => %{"$ref" => "#/definitions/" <> unquote(embed)}}) do
:embed_many
end
end
def property_type(%{"items" => %{"$ref" => "#/definitions/" <> name}}) do
if is_class_name(name) do
:has_many

View file

@ -23,10 +23,10 @@ defmodule <%= @namespace %>.<%= @version %>.<%= class_name(@resource_name) %> do
<%= for {name, df, _} <- @properties.enum do %>field :<%= Recase.to_snake(name) %>, Ecto.Enum, values: <%= inspect(df["enum"] |> Enum.map(&Recase.to_snake(&1)) |> Enum.map(&String.to_atom/1)) %>
<% end %>
<%= if @properties.embed_one != [] do %># Embed One<% end %>
<%= for {name, df, _} <- @properties.embed_one do %>embed_one :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["$ref"]) %>
<%= for {name, df, _} <- @properties.embed_one do %>embeds_one :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["$ref"]) %>
<% end %>
<%= if @properties.embed_many != [] do %># Embed Many<% end %>
<%= for {name, df, _} <- @properties.embed_many do %>embed_many :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["$ref"]) %>
<%= for {name, df, _} <- @properties.embed_many do %>embed_many :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["items"]["$ref"]) %>
<% end %>
<%= if @properties.has_one != [] do %># Has One<% end %>
<%= for {name, df, _} <- @properties.has_one do %>has_one :<%= Recase.to_snake(name) %>, <%= @namespace %>.<%= @version %>.<%= ref_to_class_name(df["$ref"]) %>