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