Skip to main content

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