Packages

Elixir library for generating HTTP clients from OpenAPI V3 json specifications

Current section

Files

Jump to
ex_oapi lib ex_oapi parser context discriminator.ex
Raw

lib/ex_oapi/parser/context/discriminator.ex

defmodule ExOAPI.Parser.V3.Context.Discriminator do
use TypedEctoSchema
import Ecto.Changeset
import ExOAPI.Helpers.Casting, only: [translate: 2]
@list_of_fields [
:property_name,
:mapping
]
@translations [
{"propertyName", "property_name"}
]
@primary_key false
typed_embedded_schema do
field(:property_name, :string)
field(:mapping, :map)
end
def map_cast(struct \\ %__MODULE__{}, params) do
with {:ok, translated} <- translate(params, @translations) do
struct
|> cast(translated, @list_of_fields)
end
end
end