defmodule Kameleoon.Types.Variation do
@moduledoc false
alias Kameleoon.Types.Variable
defstruct [:key, :name, :id, :experiment_id, variables: []]
@type t :: %__MODULE__{
key: String.t(),
name: String.t() | nil,
id: non_neg_integer() | nil,
experiment_id: non_neg_integer() | nil,
variables: [Variable.t()]
}
@spec active?(t()) :: boolean()
def active?(%__MODULE__{key: key}), do: key not in [nil, "off"]
@spec get_variable(t(), String.t()) :: Variable.t() | nil
def get_variable(%__MODULE__{variables: variables}, key) do
Enum.find(variables, &(&1.key == key))
end
end