lib/kameleoon/data/device.ex
defmodule Kameleoon.Data.Device do
@moduledoc false
alias Kameleoon.Data.Validation
@type device_type :: :phone | :tablet | :desktop
@valid_types [:phone, :tablet, :desktop]
@enforce_keys [:type]
defstruct [:type]
@type t :: %__MODULE__{
type: device_type()
}
@spec new!(device_type()) :: t()
def new!(type) do
%__MODULE__{
type: Validation.one_of!(type, @valid_types, :type)
}
end
end