lib/config_cat/null_data_source.ex
defmodule ConfigCat.NullDataSource do
@moduledoc """
Don't provide any local flag overrides.
Used to avoid `is_nil` checks in the rest of the code.
See `ConfigCat.OverrideDataSource` for more details.
"""
use TypedStruct
alias ConfigCat.OverrideDataSource
typedstruct do
# No fields
end
@doc """
Create a `ConfigCat.OverrideDataSource` that does nothing.
"""
@spec new :: t
def new do
%__MODULE__{}
end
defimpl OverrideDataSource do
alias ConfigCat.Config
alias ConfigCat.NullDataSource
@spec behaviour(NullDataSource.t()) :: OverrideDataSource.behaviour()
def behaviour(_data_source), do: :local_over_remote
@spec overrides(NullDataSource.t()) :: Config.t()
def overrides(_data_source), do: Config.new()
end
end