Current section

Files

Jump to
kameleoon_client lib kameleoon data custom_data.ex
Raw

lib/kameleoon/data/custom_data.ex

defmodule Kameleoon.Data.CustomData do
@moduledoc false
alias Kameleoon.Data.Validation
defstruct index: nil,
name: nil,
values: [],
overwrite: true
@type t :: %__MODULE__{
index: non_neg_integer() | nil,
name: String.t() | nil,
values: [String.t()],
overwrite: boolean()
}
@spec new!(non_neg_integer(), [String.t()], keyword()) :: t()
def new!(index, values, opts \\ []) do
opts = Validation.keyword!(opts, overwrite: true)
%__MODULE__{
index: Validation.u32!(index, :index),
values: Validation.string_list!(values, :values),
overwrite: Validation.boolean!(opts[:overwrite], :overwrite)
}
end
@spec new_with_name!(String.t(), [String.t()], keyword()) :: t()
def new_with_name!(name, values, opts \\ []) do
opts = Validation.keyword!(opts, overwrite: true)
%__MODULE__{
name: Validation.non_empty_string!(name, :name),
values: Validation.string_list!(values, :values),
overwrite: Validation.boolean!(opts[:overwrite], :overwrite)
}
end
end