defmodule Flagsmith.Schemas.Flag do
use TypedEctoSchema
alias Flagsmith.Schemas.{Environment, Features}
@moduledoc """
Ecto schema representing a Flagsmith Flag definition.
"""
@primary_key {:feature_id, :id, autogenerate: false}
typed_embedded_schema do
field(:enabled, :boolean)
field(:feature_name, :string)
field(:value, :string)
end
@doc false
@spec from(Environment.FeatureState.t() | Features.FeatureState.t()) :: __MODULE__.t()
def from(%Environment.FeatureState{
enabled: enabled,
feature_state_value: value,
feature: %Environment.Feature{
name: name,
id: id
}
}) do
%__MODULE__{
enabled: enabled,
feature_name: name,
value: value,
feature_id: id
}
end
def from(%Features.FeatureState{
enabled: enabled,
feature_state_value: value,
feature: %Features.Feature{
name: name,
id: id
}
}) do
%__MODULE__{
enabled: enabled,
feature_name: name,
value: value,
feature_id: id
}
end
end