defmodule ConfigCat.EvaluationDetails do
@moduledoc """
Captures the results of evaluating a feature flag.
"""
use TypedStruct
alias ConfigCat.Config
alias ConfigCat.User
@typedoc """
The results of evaluating a feature flag.
Fields:
- `:default_value?`: Indicates whether the default value passed to the setting
evaluation functions like `ConfigCat.get_value/3`,
`ConfigCat.get_value_details/3`, etc. is used as the result of the
evaluation.
- `:error`: Error message in case evaluation failed.
- `:fetch_time`: Time of the last successful config download.
- `:key`: The key of the feature flag or setting.
- `:matched_targeting_rule`: The targeting rule (if any) that matched during
the evaluation and was used to return the evaluated value.
- `:matched_percentage_option`: The percentage option (if any) that was used
to select the evaluated value.
- `:user`: The `ConfigCat.User` struct used for the evaluation (if available).
- `:value`: Evaluated value of the feature flag or setting.
- `:variation_id`: Variation ID of the feature flag or setting (if available).
"""
typedstruct do
field :default_value?, boolean(), default: false
field :error, String.t()
field :fetch_time, DateTime.t()
field :key, Config.key(), enforce: true
field :matched_targeting_rule, map()
field :matched_percentage_option, map()
field :user, User.t()
field :value, Config.value(), enforce: true
field :variation_id, Config.variation_id()
end
@doc false
@spec new(keyword()) :: t()
def new(options) do
struct!(__MODULE__, options)
end
end