defmodule Kameleoon.Data.PageView do
@moduledoc false
alias Kameleoon.Data.Validation
@enforce_keys [:url]
defstruct [:url, title: nil, referrers: []]
@type t :: %__MODULE__{
url: String.t(),
title: String.t() | nil,
referrers: [integer()]
}
@spec new!(String.t(), keyword()) :: t()
def new!(url, opts \\ []) do
opts = Validation.keyword!(opts, title: nil, referrers: [])
%__MODULE__{
url: Validation.non_empty_string!(url, :url),
title: Validation.string_or_nil!(opts[:title], :title),
referrers: Validation.integer_list!(opts[:referrers], :referrers)
}
end
end