Skip to main content

lib/kameleoon/types/variation.ex

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