Current section
Files
Jump to
Current section
Files
lib/flagsmith/sdk/schemas/identity_with_traits.ex
defmodule Flagsmith.API.IdentifyWithTraits do
use TypedEctoSchema
import Ecto.Changeset
@primary_key false
typed_embedded_schema do
embeds_many(:flags, Flagsmith.API.FeatureStateSerializerFull)
field(:identifier, :string)
embeds_many(:traits, Flagsmith.API.TraitSerializerBasic)
end
def changeset(struct \\ %__MODULE__{}, params) do
struct
|> cast(params, [:identifier])
|> validate_required([:identifier])
|> cast_embed(:traits)
|> cast_embed(:flags)
end
def from_response(element) when is_map(element) do
element
|> changeset()
|> apply_changes()
end
def from_response(elements) when is_list(elements) do
Enum.map(elements, fn element ->
element
|> changeset()
|> apply_changes()
end)
end
end